4.1.结构体和方法 (1)go语言的面向对象 go仅支持封装,不支持继承和多态 go语言没有class,只有struct (2)struct的创建 package mainimport "fmt"func main() {type treeNode struct {value intleft, right *tr
4.1.结构体和方法
(1)go语言的面向对象
- go仅支持封装,不支持继承和多态
- go语言没有class,只有struct
(2)struct的创建
package main import "fmt" func main() { type treeNode struct { value int left, right *treeNode //指针类型 } //不论地址还是结果本身,都用“.” 来访问成员 var root treeNode //root是一个实例 root = treeNode{value: 3} fmt.Println(root) //{3 <nil> <nil>} root.left = &treeNode{} fmt.Println(root) //{3 0x1104c0f0 0x1104c100} }
(3)为struce创建方法
package main import "fmt" type treeNode struct { value int } //为结构体创建方法 func (node treeNode) print() { fmt.Println(node.value) } func main() { var root treeNode root = treeNode{value: 3} root.print() //3 }
(4)使用指针作为方法接收者,改变结构内容
package main import "fmt" type treeNode struct { value int } //为结构体创建方法 func (node treeNode) print() { fmt.Println(node.value) } //不适用指针“*treeNode‘,则不能改变value的值 //func (node treeNode) setValue(value int) { // node.value = value //} //只有使用只用指针才可以改变结构体内容 func (node *treeNode) setValue(value int) { node.value = value } func main() { var root treeNode root = treeNode{value: 3} root.print() //3 root.setValue(6) root.print() //6 }
4.2.包和封装
(1)封装
- 首字母大写:public
- 首字母小写:private
(2)包
- 每个目录一个包
- main包包含可执行入口
- 为结构定义的方法必须放在同一个包内
- 可以是不同文件