我是Golang的新手,而且从目前为止我所学到的东西中,有三种不同的方式来建立一个结构:
a := MyStruct {} // plain by value style. Is that what this is called?
b := new(MyStruct) // using new
c := &MyStruct {} // using a reference
我不清楚其他每个之间的实际差异,然后我发现在打印对象的内存地址时我必须添加引用&
符号fmt.Printf("%p\n", &a)
使用" plain"样式vs fmt.Printf("%p\n", b)
为" new"和"参考"样式。我的假设是,这是因为使用" plain" style以不同的方式分配内存,但这只是猜测。
似乎使用" new"和"参考"样式是等价的选项,所以选择那些是一个风格决定?在这种语言中是否存在惯用的偏好,我应该使用哪种方法?还有其他我尚未发现的款式吗?
答案 0 :(得分:3)
a := MyStruct {}
b := new(MyStruct)
c := &MyStruct {}
a
是一个复合文字值。 b
是指向该类型的零值的指针。 c
是指向复合文字值的指针。 a
和c
非常常见。 b
并不常见,在大多数情况下,c
被使用。
以Tour of Go为例。