//方法,其实就是函数 type Prince struct { name string age int sex int } //语法 func (a Prince) GitName() { } //方法给对象用 func (a Prince)git() { fmt.Println(a.name) fmt.Println(a) } //go中的方法可以想想成python中的类,在类中实例化的属性,让其函数可以使用,且是多个函数都可以
//方法,其实就是函数 type Prince struct { name string age int sex int Hobby } //匿名字段的方法 type Hobby struct { id int } //查看id func (a Hobby) xxx() { fmt.Println(a.id) } //查看name func (a Prince) qqq() { fmt.Println(a.name) } func (a Prince) ccc(){ a.Hobby.xxx() } func main() { var p = Prince{name:"yangxin",Hobby:Hobby{id:10}} p.xxx() //非正常查询,方法提升 p.Hobby.xxx() //正常查询,Hobby即使名字也是类型
//在方法中使用值接收器 与 在函数中使用值参数
//在方法中使用指针接收器 与 在函数中使用指针参数
type price struct { name string id int age int } func (a price)inner() { fmt.Println(a.name) } func (a *price)inner1() { fmt.Println(a.name) } func inner2(a price) { fmt.Println(a.name) } func inner3(a *price) { fmt.Println(a.name) } func main() { p:= price{name:"yangxin"} //调用值接收器 p.inner() //调用指针接收器 p.inner1() //调用值函数 inner2(p) //调用指针函数 inner3(&p) //不管是指针接受器还是值接收器,都可以使用值来调用 //不管是指针接收器还是直接收器,都可以使用指针来调用 // 函数中,是什么参数,就传什么参数
//在非结构体上的方法 //重命名 type MyInt int func (i *MyInt)add() { (*i)++ fmt.Println(*i) } func main() { var a MyInt=10 a.add() fmt.Println(a) }