在新声明中设置值

时间:2014-04-28 19:30:26

标签: go

是否可以在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类型,这是不可能的?

1 个答案:

答案 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}