如何在Go中初始化一个指向结构的指针的类型?

时间:2015-03-19 18:50:42

标签: pointers struct types go initialization

例如:

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}

但我想避免这种情况。

1 个答案:

答案 0 :(得分:5)

[可能]没有理由使用type Bar *struct形式。该类型是一个指向匿名结构的指针,因此您必须使用匿名结构初始化它(或者当您指出时,它是一个等效的可转换结构类型)。

var b Bar = &struct{x int}{}
// or
b := Bar(&Foo{})

声明基本相同

type Bar *Foo

这可能会让您更清楚自己想做什么。

但同样,这是非惯用的,你可能会在团队设置或公共界面中遇到阻力(即我个人不会通过这是代码审查)