第四章、Go-面向“对象”
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包包含可执行入口
- 为结构定义的方法必须放在同一个包内
- 可以是不同文件
posted on 2019-08-03 21:55 zhang_derek 阅读(212) 评论(0) 收藏 举报
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号