go中的方法以及自定义类型代码示例

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
}

猜你喜欢

转载自www.cnblogs.com/c-x-a/p/11756963.html