我在学习Golang,当我浏览描述 struct 的章节时,我遇到了不同的初始化 struct 的方法.
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)
而它们将 struct 的值打印为
{ }
{ }
{ 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
数据的实际变量是什么?使用这些不同类型的初始化的最佳方案是什么?