1 回答

TA貢獻1815條經驗 獲得超13個贊
我可以將 Vehicle 對象分配給 Car 對象
你是說對面嗎?在 OOP 中,您不能將 Vehicle 分配給 Car,但可以將 Car 或 Van 分配給 Vehicle。
如果是這樣,您當然可以在 Go 中執行此操作:
var v Vehicle
c := Car{Vehicle:Vehicle{1}}
v = c.Vehicle
fmt.Println(v) // prints {1}
此示例還演示了您可以準確地初始化您想要的字段。但是,這種類型的對象構造非常有限,因此構造方法通常用于獲得類似構造函數的行為:
func CreateVehicle(wheels int) Vehicle {
return Vehicle{wheels}
}
func CreateCar(wheels int, maker string) Car {
return Car{CreateVehicle(wheels), maker}
}
func main() {
var v Vehicle
c := CreateCar(4, "Ford")
v = c.Vehicle
fmt.Println(v)
}
順便說一句,如果您通常使用引用類型,那么 Go 中的引用管理可能會很棘手。結構總是按值傳遞。要通過引用傳遞它,請使用&獲取引用并*指定 byref 參數。
所以,這行不通:
func (v Vehicle) SetNumberOfWeels(wheels int) {
v.wheelCount = wheels
}
func main() {
v := Vehicle{}
v.SetNumberOfWeels(5)
fmt.Println(v) // prints {0}
}
但這將:
func (v *Vehicle) SetNumberOfWeels(wheels int) {
v.wheelCount = wheels
}
func main() {
v := Vehicle{}
v.SetNumberOfWeels(5)
fmt.Println(v) // prints {5}
}
- 1 回答
- 0 關注
- 682 瀏覽
添加回答
舉報