如果是 Go 中的 Struct Literals,
type Vertex struct {
X, Y int
}
var (
p = Vertex{1, 2} // has type Vertex
q = &Vertex{1, 2} // has type *Vertex
r = Vertex{X: 1, Y: 2}
)
Run Code Online (Sandbox Code Playgroud)
p、q 和 r 的值为 {1 2} &{1 2} {1 2}
以上三个变量的初始化方法有什么区别?变量 p、q 和 r 有何不同?
q是指向在堆上分配的结构的指针。其他是相同的,并在堆栈上分配。是否列出字段名称纯粹是为了可读性,我建议尽可能这样做。