go,方法

//方法,其实就是函数
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)
}

猜你喜欢

转载自www.cnblogs.com/yangxinpython/p/12030307.html
今日推荐