如何在 Go 中初始化一个指向结构的指针类型?
How can I initialize a type that is a pointer to a struct in Go?
例如:
type Foo struct {
x int
}
var foo *Foo = &Foo{5}
type Bar *struct {
x int
}
var bar Bar = ??
如何初始化 bar
?
我知道有一个解决方法:
type Bar *Foo
var bar Bar = &Foo{5}
但我想避免这种情况。
[可能] 没有理由使用 type Bar *struct
形式。该类型是指向匿名结构的指针,因此您必须使用匿名结构(或者如您所指出的,等效的可转换结构类型)对其进行初始化。
var b Bar = &struct{x int}{}
// or
b := Bar(&Foo{})
声明本质上是一样的
type Bar *Foo
这可能会让您更清楚地了解您要做什么。
但同样,这不是惯用的,您可能会在团队设置或 public 界面中使用它时遇到阻力(即我个人不会通过这是代码审查)
例如:
type Foo struct {
x int
}
var foo *Foo = &Foo{5}
type Bar *struct {
x int
}
var bar Bar = ??
如何初始化 bar
?
我知道有一个解决方法:
type Bar *Foo
var bar Bar = &Foo{5}
但我想避免这种情况。
[可能] 没有理由使用 type Bar *struct
形式。该类型是指向匿名结构的指针,因此您必须使用匿名结构(或者如您所指出的,等效的可转换结构类型)对其进行初始化。
var b Bar = &struct{x int}{}
// or
b := Bar(&Foo{})
声明本质上是一样的
type Bar *Foo
这可能会让您更清楚地了解您要做什么。
但同样,这不是惯用的,您可能会在团队设置或 public 界面中使用它时遇到阻力(即我个人不会通过这是代码审查)