Golang_继承
原创
©著作权归作者所有:来自51CTO博客作者959_1x的原创作品,请联系作者获取转载授权,否则将追究法律责任
Golang
文章目录
1 继承
Golang的继承比较简单,因为Golang的继承追求的是简单。不像Java那样复杂。
下面的实例给出了继承的最简单的应用
实例1
package main
import "fmt"
type A struct{
age int
}
type C struct{
age int
}
type B struct{
C
A
name string
}
func main(){
var b B
b.A.age = 20
fmt.Println(b.A.age)
b.C.age = 40
fmt.Println(b.C.age)
fmt.Println(b)
}
强调 ·1
如果是多继承的话,那么继承的如果两个父亲都有相同字段的话,那么必须要在输出的时候显示这个父亲的名称。
如果没有相同字段的话那么可以不用显示父亲的名称。
实例2
type Goods struct{
name string
price float64
}
type Brands struct{
name string
address string
}
type TV struct{
Goods
Brands
}
func main(){
tv := TV{Goods{"电视机",4000},Brands{"海尔","上海"},}
fmt.Println(tv)
tv2 :=TV{
Goods{
name : "电视机",
price : 5000,
},Brands{
name : "基德",
address : "北京",
},
}
fmt.Println(tv2)
}
这个实例表示出来了如何在创建变量的时候赋值的情况。
有两种方法。且要注意其中的逗号等细节。
实例3
type Goods struct{
name string
price int
}
type Brands struct{
name string
address string
}
type TV struct{
*Goods
*Brands
}
func main(){
tv := TV{&Goods{"电视机",5000},&Brands{"戴尔","山东"},}
fmt.Println(*tv.Goods)
}
传入指针是效率比较传值来说更高的。所有上面的实例我用了传入指针的方法去创建变量且赋值
在Golang的底层有指针的优化,这个要注意。
实例4
type master struct{
name string
age int
}
type A struct{
//结构体的匿名字段也是基本数据类型
//但是不可以有两个int的匿名字段
master
int
}
func main(){
//匿名字段的演示
var a A
a.int = 50
a.name = "tom"
a.age = 50
fmt.Println(a)
}
上面的实例表示出了匿名字段可以是基本数据类型也可以是结构体,可以是int,float64或者bool型
但是不可以有重复的基本数据类型。不然编译的时候编译器会分不清是哪一个数据类型。