返回顶部
扩大
缩小

Zhang_derek

第四章、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  阅读(205)  评论(0编辑  收藏  举报

导航