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
}

posted @ 2019-10-29 09:38  公众号python学习开发  阅读(217)  评论(0编辑  收藏  举报