1、由于结构体是值类型
,在方法传递时希望传递结构体地址
,可以使用结构体指针完成,结合new(T)
函数创建结构体指针
peo := new(People)
fmt.Println(peo == nil)
peo.Name = "jeff"
fmt.Println(peo)
peo1:=peo
peo1.Name="高级语言"
fmt.Println(peo1,peo)
2、如果不想使用new(T)
函数,可以直接声明结构体指针并赋值
var peo *People
peo = &People{"jeff", 18}
fmt.Println(peo)
3、结构体指针比较的是地址,*结构体指针
取出地址中对应的值
p1 := People{"jeff", 18}
p2 := People{"jeff", 18}
fmt.Printf("%p %p\n", &p1, &p2)
fmt.Println(p1 == p2)
p3 := new(People)
p3 = &People{"jeff", 17}
fmt.Println(p1 == *p3)
p4 := &People{"jeff", 17}
fmt.Println(p3 == p4)