golang衍生类型
时间: 2023-09-10 09:10:06 浏览: 211
在 Go 语言中,通过结构体的嵌入实现衍生类型。结构体的嵌入允许一个结构体类型将另一个结构体类型作为其成员,从而继承其字段和方法。
以下是一个示例代码,展示了如何使用嵌入结构体来实现衍生类型:
```go
package main
import "fmt"
// 基类
type Animal struct {
name string
}
// 基类的方法
func (a Animal) Speak() {
fmt.Println("Animal speaks")
}
// 衍生类型
type Dog struct {
Animal // Animal 结构体嵌入到 Dog 结构体中
breed string
}
// 衍生类型的方法
func (d Dog) Bark() {
fmt.Println("Dog barks")
}
func main() {
// 创建一个 Dog 类型的对象
dog := Dog{
Animal: Animal{name: "Bob"},
breed: "Labrador",
}
// 访问基类的字段和方法
fmt.Println(dog.name)
dog.Speak()
// 访问衍生类型自己的字段和方法
fmt.Println(dog.breed)
dog.Bark()
}
```
在上面的示例中,`Dog` 结构体是通过嵌入 `Animal` 结构体来实现衍生类型。`Dog` 类型获得了 `Animal` 类型的字段和方法,并且可以添加自己特有的字段和方法。
注意,在创建衍生类型对象时,需要显式地指定基类字段的值,即 `Animal: Animal{name: "Bob"}`。
运行以上示例代码,输出结果为:
```
Bob
Animal speaks
Labrador
Dog barks
```
可以看到,`Dog` 类型成功继承了 `Animal` 类型,并且可以调用基类的方法,同时还拥有自己特有的方法和属性。
阅读全文