我正在尝试学习Go语言,但我总是遇到一些概念难以理解,这些概念与其他编程语言的应用方式不同。
假设我有一个结构体
type Vehicle struct {
Seats int
}
我现在想要另一个结构体,它嵌入了Vehicle
:
type Car struct {
Vehicle
Color string
}
据我理解,
Car
结构现在 嵌入 了 Vehicle
。现在我想要一个可以接受 任何 车辆的函数。
func getSeats(v Vehicle){
return v.Seats
}
但是每当我尝试传递一个Car
时:
getSeats(myCar)
我遇到了如下错误:
cannot use myCar (value of type Car) as Vehicle value in argument to getSeats
但我的IDE告诉我
myCar
有一个Seats
属性!从这里我理解嵌入不同于继承。我的问题是:是否有相当于C++结构体继承的等效方式,可以使函数接受基本结构体?还是Go完全处理这个问题的方式不同?我该如何用"Go方式"实现这样的功能?
getSeats(myCar.Vehicle)
,要么将Vehicle改为接口类型。请注意,不要改变原意。 - Peter