虽然派生结构体可以调用基结构体的方法,访问它的属性,但它并不是严格意义上的继承,在 Java 中,子类继承了父类,那么可以让“父类 = 子类”,但是 Go 中不可以,可以看以下示例代码:
funcMethod1(c Creature){}funcmain(){
d := Dog{Animal{Creature{Kind:"生物"}}}Method1(d)//编译阶段报错:cannot use d (type Dog) as type Creature in argument to Method1}
包括像下面这段代码,更是不能被允许!
funcMethod2(d Dog){}funcmain(){
c := Interface.Creature{Kind:"生物"}
Interface.Method2(c)//编译阶段报错:cannot use c (type Creature) as type Dog in argument to Method2}
文章目录1、前言2、结构体的定义与声明和使用2.1、结构体的定义2.2、结构体的声明2.3、结构体的使用2.3.1、函数参数之传递值拷贝2.3.2、函数参数之传递指针拷贝2.3.3、结构体的方法2.3.3.1、以值为接收体2.3.3.2、以指针为接收体3、结构体的嵌套3.1、入门案例3.2、需要注意的点1、前言在 Go 语言中不存在 Class 类这种概念,但是存在 struct 结构体,可以代替实现 Class 的功能,并且 Go 语言中也不存在继承,但是可以通过结构体嵌套实现类似 Java 中的继