Go 在新的申报单中设置值
是否可以在Go 在新的申报单中设置值,go,Go,是否可以在新类型的声明中包含值 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
新类型的声明中包含值
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使“顶点{val,val}”成为一个文本值而不是一个基本的顶点类型,这是不可能的?您实际上不需要“新建”,您可以简单地编写:
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}
是的,这是可能的,您可以根据需要声明一个new
对象,只需输入关键字new
。这是两种不同的类型。使用“新建”将为您提供一个指向顶点的指针,而您使用的将为您提供一个顶点。您是对的,很抱歉忽略了这一点。我将把它添加到答案中。我现在的理解是,new
仅在您希望将空数据类型存储到指针时才有用。正确吗?在这种情况下,您可以使用v:=new(Vertex)
或v:=&Vertex{}
-另请参见@Lemony Andrew:new仅对int
等无法执行和Vertex{}
的类型有用。始终使用&顶点{/*init(如果需要)*/}
,并且从不使用新的。