【发布时间】:2016-04-05 05:58:21
【问题描述】:
我正在学习 golang,在阅读描述结构的章节时,我遇到了初始化结构的不同方法。
p1 := passport{}
var p2 passport
p3 := passport{
Photo: make([]byte, 0, 0),
Name: "Scott",
Surname: "Adam",
DateOfBirth: "Some time",
}
fmt.Printf("%s\n%s\n%s\n", p1, p2, p3)
虽然这些将结构的值打印为
{ }
{ }
{ Scott Adam Some time}
, 下面的代码会打印一个 & 符号,因为它是一个引用。
pointerp1 := &p3
fmt.Printf("%s", pointerp1)
pointerp2 := new(passport)
pointerp2.Name = "Anotherscott"
fmt.Printf("%s", pointerp2)
&{ Scott Adam Some time}&{ Anotherscott }
请帮助我解决我的疑问。
在
pointerp1 := &p3的用法中,pointerp1是p3的引用变量,它保存了实际数据。同样,保存pointerp2数据的实际变量是什么?使用这些不同类型的初始化的最佳方案是什么?
【问题讨论】:
-
Go 没有“引用”的概念。不要将指针命名为“引用”。