英文:
setting values in a new declartion
问题
在Go语言中,无法在声明新类型时包含值。你只能声明一个新类型,并在之后使用new
关键字来分配内存,并返回指向该类型的指针。然后,你可以使用点操作符来访问结构体字段,并为它们赋值。
在你的示例中,正确的写法是:
v := new(Vertex)
v.X, v.Y = 12, 4
这将创建一个新的Vertex
类型的指针,并将X
和Y
字段的值分别设置为12和4。无法在new
语句中直接为字段赋值,因为new
只是为类型分配内存,并将其初始化为零值。
希望这能帮到你!
英文:
Is it possible to include values in the declaration of a new
type.
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 )
}
Or because go makes the "Vertex{val, val} " a literal value instead of a basic Vertex type it's not possible?
答案1
得分: 3
你实际上不需要使用"new",你可以简单地写成:
v := Vertex{1,2}
如果你想要一个结构体,其中所有成员都设置为它们类型的零值(例如,对于整数是0
,对于指针是nil
,对于字符串是""
等),那就更简单了:
v := Vertex{} // 等同于 Vertex{0,0}
你也可以只初始化一部分成员,让其他成员保持它们的零值:
v := Vertex{Y:1} // 等同于 Vertex{0,1}
请注意,使用这些方式,v 将是一个类型为 Vertex 的变量。如果你想要一个指向 Vertex 的指针,可以使用:
v := &Vertex{1,2}
英文:
You don't actually need "new", you can simply write:
v := Vertex{1,2}
If you want a struct with all members set to the zero value of their types (e.g., 0
for ints, nil
for pointers, ""
for strings, etc.), it's even simpler:
v := Vertex{} // same as Vertex{0,0}
You can also only initialize some of the members, leaving the others with their zero value:
v := Vertex{Y:1} // same as Vertex{0,1}
Note that with these v will be a variable of type Vertex. If you want a pointer to a Vertex, use:
v := &Vertex{1,2}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论