go 语言学习笔记⑧----结构体

go 语言学习笔记⑧----结构体

一种聚合的数据类型, 由一系列具有相同的数据类型或者不同的数据类型的数据结构构成的数据集合, 每个数据被称为结构体成员(自定义数据类型)

初始化

type 结构体名称 struct{内容}

type node struct {
	l, r, sum int
}

顺序初始化

var 变量名 结构体名 = 结构体名{初始化变量}

func main() {
	var a node = node{1, 2, 3}
	fmt.Println(a)
	//{1 2 3}
}

指定初始化

没有指定的值为0

func main() {
	a := node{l: 2, sum: 3}
	fmt.Println(a)
	//{2 0 3}
}

结构体指针

var p *node = &node{}

func main() {
	var a *node = &node{1, 2, 3}
	fmt.Println(a)
	//&{1 2 3}
}

单独操作成员

普通:使用**.**运算
指针:指针有合法指向后才能操作成员


func main() {
	a := node{}
	a.l = 1
	a.r = 2
	a.sum = 3
	fmt.Println(a)
	//{1 2 3}
	b := node{4, 5, 6}
	pb := &b
	fmt.Println(pb)
	//&{4 5 6}
}

通过new申请一个结构体

变量名 := new(结构体名)
返回一个结构体指针


func main() {
	a := new(node)
	fmt.Printf("%T", a)
	//*main.node
}

做函数参数

值传递
引用传递


func test(a node) {
	a.l = 14
}
func test1(a *node) {
	a.l = 14
}

func main() {
	a := node{1, 2, 3}
	fmt.Println(a)
	//{1 2 3}
	test(a)
	fmt.Println(a)
	//{1 2 3}
	b := node{4, 5, 6}
	fmt.Println(b)
	//{4 5 6}
	test1(&b)
	fmt.Println(b)
	//{14 5 6}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值