Golang:创建新实例的3种方法但不同之处是什么? (初级)

时间:2016-02-14 05:06:54

标签: go

我是Golang的新手,而且从目前为止我所学到的东西中,有三种不同的方式来建立一个结构:

a := MyStruct {}  // plain by value style. Is that what this is called?
b := new(MyStruct) // using new
c := &MyStruct {} // using a reference

Example

我不清楚其他每个之间的实际差异,然后我发现在打印对象的内存地址时我必须添加引用&符号fmt.Printf("%p\n", &a)使用" plain"样式vs fmt.Printf("%p\n", b)为" new"和"参考"样式。我的假设是,这是因为使用" plain" style以不同的方式分配内存,但这只是猜测。

似乎使用" new"和"参考"样式是等价的选项,所以选择那些是一个风格决定?在这种语言中是否存在惯用的偏好,我应该使用哪种方法?还有其他我尚未发现的款式吗?

1 个答案:

答案 0 :(得分:3)

  

The Go Programming Language Specification

     

Composite literals

     

Allocation

     

Variable declarations

     

Short variable declarations

a := MyStruct {}  
b := new(MyStruct) 
c := &MyStruct {} 

a是一个复合文字值。 b是指向该类型的零值的指针。 c是指向复合文字值的指针。 ac非常常见。 b并不常见,在大多数情况下,c被使用。

Tour of Go为例。