// 嵌套类型,也就是继承
package main
import "fmt"
// 内部类型
type user struct {
name string
age int
}
// 外部类型
type admin struct {
user
email string
}
//定义内部类型方法
func (u user) inner(){
fmt.Println("user method")
}
func (a admin) inner(){
fmt.Println("admin method")
}
func main() {
ad := admin{user{name: "lihua", age: 25}, "scusong@foxmail.com"}
fmt.Println(ad.user.name)
fmt.Println(ad.age)
fmt.Println(ad.email) //只能直接调用
// 覆盖方法调用
ad.user.inner() //user method
ad.inner() //admin method
}
/*
对于内部类型的属性和方法访问上,我们可以用外部类型直接访问,也可以通过内部类型进行访问;
但是我们为外部类型新增的方法属性字段,只能使用外部类型访问,因为内部类型没有这些。
外部和内部方法同名时,内部方法会被覆盖
*/
网友评论