Go学习笔记07-结构体与方法

时间:2022-06-04 10:46:18

Go学习笔记07-结构体与方法


面向对象

Go语言只支持封装,不支持继承和多态

Go语言中只有struct,即结构体;没有class

结构的定义与创建

  1. package main 
  2.  
  3. import "fmt" 
  4.  
  5. //定义结构 
  6. type treeNode struct
  7. value int 
  8. left, right *treeNode 
  9.  
  10. //自定义的工厂函数 
  11. func createNode(value int) *treeNode
  12. //返回的是局部变量的地址 
  13. return &treeNode{value: value} 
  14.  
  15. // 
  16. func (node treeNode) print()
  17. fmt.Print(node.value) 
  18.  
  19. func main()
  20. //创建结构 
  21. root := treeNode{value: 3
  22. root.left = &treeNode{} 
  23. root.right = &treeNode{5, nil, nil
  24. root.right.left = new(treeNode) 
  25. root.left.right = createNode(2
  26.  
  27. root.print() 
  28. fmt.Println() 

上面的代码创建的树如下图:

Go学习笔记07-结构体与方法

  • 不管是地址还是结构体本身,都用 . 来访问成员。
  • nil指针也可以调用方法

值接收者与指针接收者

  • 改变内容必须使用指针接收者
  • 结构过大应优先考虑使用指针接收者
  • 一致性
  • 值接收者是Go语言特有的