美文网首页
go学习笔记(4) - 结构体、接口

go学习笔记(4) - 结构体、接口

作者: 卡门001 | 来源:发表于2021-07-02 10:50 被阅读0次

结构体与方法

  • 工厂函数返回局部变量地址
  func createNode(value int) *TreeNode {
     
  }
  • 结构体专有方法
func (node TreeNode) print() 
...
  • 结体构综合示例
package main

import "fmt"

//struct:结构体
type TreeNode struct {
    value int
    Left,Right *TreeNode

}

//工厂方法,一般返回结构的地址
func createNode(value int) *TreeNode  {
    return &TreeNode{value: value}
}

//等同一起func print(node TreeNode) {
//代码该方法是由TreeNode使用
func (node TreeNode) print() {
    fmt.Print(node.value)
}

//go函数都是传值
//要解决TreeNode中value在main中使用,用指定
func (node *TreeNode) setValue(value int) {
    node.value = value
}

//代码该方法是由TreeNode使用
func print(node TreeNode) {
    fmt.Print(node.value)
}

func main() {
    var root TreeNode;
    root = TreeNode{value: 0}
    root.Left = &TreeNode{}
    root.Right = &TreeNode{2,nil,nil}
    root.Right.Right = new(TreeNode)
    root.Left.Right = createNode(12)

    root.print()
    root.Right.Left.setValue(4)
    root.Right.Left.print()
    fmt.Println("")
}

接口

package main

import "fmt"

//定义1个接口student,它包含1个 StudentName 方法
type student interface {
    StudentName() string
    Gender() int
}

//2、定义结构体
type StudentImp struct {
    name string //一个返回值对应接口的一个方法近回
    gender int
}

//3.给结构体绑定一个方法 StudentName。表示它实现了 student接口
func (s StudentImp) StudentName() string{
    return s.name
}

//4.给结构体绑定一个方法 Gender。表示它实现了 student接口
func (s StudentImp) Gender() int{
    return s.gender
}

//5. 使用
func main() {
    //1. 实例化结构体
    imp := StudentImp{}
    imp.name = "nian"
    imp.gender = 1

    //2. 再实例化一下interface
    var myStudent student

    //3. 将结构体赋给接口变量
    myStudent = imp

    //4. 调用接口变量的值
    fmt.Println(myStudent.Gender())
}

问题集锦

new与make

  1. new只分配内存,make只用于slice,map,和channel的初始化
  2. new(T) 返回的是 T 的指针
  3. 慎重使用new, 建议使用make来初始化map

  • 为同一个结构定义的方法必须在一个包内完成
  • 每个目录一个包
  • main为特殊包
  • import时的包名由 go.mod中定义的前缀+package 名
  • 扩展已有类型
    • 使用组合的方式
    • 用别名的方式
    • 使用内嵌的方式

相关文章

  • go学习笔记(4) - 结构体、接口

    结构体与方法 工厂函数返回局部变量地址 结构体专有方法 结体构综合示例 接口 问题集锦 new与make new只...

  • go快速学习_结构体-接口-结构体函数

    接口为什么要特意的罗列出来呢? 因为go和传统的面向对象的编程语言不太一样,没有什么类和继承的概念.通过接口来实现...

  • Go学习笔记-结构体

    如果说 Go 语言的基础类型是原子,那么结构体就是分子。分子是原子的组合,让形式有限的基础类型变化出丰富多样的形态...

  • go语言中的继承和实现

    go语言没有类,只有结构体。以及还有接口,如何利用结构体和接口来实现类似与java的继承和实现呢?我试着整理一下。...

  • Go结构体、方法、接口

    1 结构体 Go语言中没有“类”的概念,也不支持像继承这种面向对象的概念。但是Go语言的结构体与“类”都是复合结构...

  • go 结构体、方法、接口

    输出

  • Go语言探索 - 10(原创)

    上一篇文章主要学习了Go语言的结构体以及结构体指针,本篇文章主要学习Go语言的切片以及Map。 Go语言数组的长度...

  • GO——学习笔记(五)

    上篇:GO——学习笔记(四) 下篇:GO——学习笔记(六) 示例代码——go_4 https://github.c...

  • Go学习--结构体

    结构体 1、结构体的定义: type n...

  • golang第二天

    测试代码 hello.go 总结 数据,指针,切片,集合,结构体,接口的基本使用 打卡时间: 23:27

网友评论

      本文标题:go学习笔记(4) - 结构体、接口

      本文链接:https://www.haomeiwen.com/subject/ymnkultx.html