是否可以在new
类型的声明中包含值。
type Vertex struct {
X, Y int
}
func main() {
v := new( Vertex{ 0, 0} ) // Like so
fmt.Println( v )
// Instead of :
v = new(Vertex)
v.X, v.Y = 12, 4 // extra line for initializing the values of X and Y
fmt.Println( v )
}
或者因为go使“Vertex {val,val}”成为字面值而不是基本的Vertex类型,这是不可能的?
答案 0 :(得分:3)
你实际上并不需要"新的",你可以简单地写一下:
v := Vertex{1,2}
如果您想要一个结构,其所有成员都设置为其类型的零值(例如0
对于整数,nil
用于指针,""
用于字符串等),它甚至更简单:
v := Vertex{} // same as Vertex{0,0}
您也可以只初始化一些成员,让其他成员保持零值:
v := Vertex{Y:1} // same as Vertex{0,1}
请注意,这些v将是Vertex类型的变量。如果您想要指针到顶点,请使用:
v := &Vertex{1,2}