我是Go的新手,并且在初始化结构时苦苦挣扎。
经典的例子是
type Car struct {
wheelCount int
}
type Ferrari struct {
Car
driver string
}
// Initialise Ferrari
f := Ferrari{Car{4},"Some Dude"}
我的问题是,如果我只使用构造函数创建* Car,我如何获得*法拉利?
我希望能够达到如下内容
func NewCar(wheels int) *Car{
return &Car{wheels};
}
car := NewCar(4);
ferrari := Ferrari{car,"Some Dude"}; // ERROR cannot use car (type *Car) as type Car in field value
我是否错误地接近了这个问题?可以用某种方式简单地取消引用汽车吗?
答案 0 :(得分:3)
错误信息非常清楚。您无法使用Car
作为指向Car
的指针。您需要重新定义Ferrari
以嵌入指向Car
type Ferrari struct {
*Car
driver string
}
或取消引用文字中的指针:
ferrari := Ferrari{*car, "Some Dude"}