我在 Go 方面相对较新,并且在初始化结构方面苦苦挣扎。
经典的例子是
type Car struct {
wheelCount int
}
type Ferrari struct {
Car
driver string
}
// Initialise Ferrari
f := Ferrari{Car{4},"Some Dude"}
我的问题是,如果我只有用构造函数创建的 *Car,我如何获得 *Ferrari?
我希望能够像下面这样
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
我是否错误地处理了问题?能否以某种方式简单地取消对汽车的引用?
最佳答案
错误信息很清楚。您不能将 Car
用作指向 Car
的指针。您需要重新定义 Ferrari
以嵌入指向 Car
type Ferrari struct {
*Car
driver string
}
或取消引用文字中的指针:
ferrari := Ferrari{*car, "Some Dude"}
关于pointers - Golang 向下类型转换结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30934792/