package main
import "fmt"
type user struct {
name string
age int
sex string
}
type admin struct {
person user
level string
}
func main() {
u := user{name: "zhangsan",
age: 12,
sex: "女"}
u.userReciver("里默默")
//Go在代码背后的执行动作
//(&u).userReciver("里默默")
//也可以使用指针来调用使用值接收者声明的方法
u1 := &user{name: "zhangsan",
age: 12,
sex: "女"}
u1.userReciver1()
//获取的u1地址,需要通过地址获取值
fmt.Println(*u1)
//自定义类型也可以嵌套。
ad := admin{
person: user{
name: "sawanhg",
age: 34,
sex: "男",
},
level: "niubi",
}
fmt.Println(u)
fmt.Println(ad)
}
//关键字func和函数名之间的参数被称作接收者,将函数与接收者的类型绑在一起。
// 如果一个函数有接收者,这个函数就被称为方法
func (u user) userReciver1() {
u.name = "里默默你好"
}
//user值接者,
// 和上面不使用指针的方法比更方便改完值后面继续用。
func (u *user) userReciver(name string) {
u.name = name
}