golang 值接收者和指针接收者

interface_值接收者_指针接收者.png

例子

package main

import "fmt"


//定义一个 anial 接口类型
type anial interface {
    move()
}


type cat struct {
    name string
    feet int
}

type dog struct {
    name string
    feet int
}

// 采用值接收者,参数可以传递结构体类型和结构体指针类型
//func (c cat)move()  {
//  fmt.Printf("%s,走猫步\n", c.name)
//}
//
//func (d dog)move()  {
//  fmt.Printf("%s,走狗步\n", d.name)
//}

// 采用指针接收者,参数仅可以传递结构体指针类型
func (c cat)move()  {
    fmt.Printf("%s,走猫步\n", c.name)
}

func (d dog)move()  {
    fmt.Printf("%s,走狗步\n", d.name)
}

func main() {
    var a anial

    c1 := cat{
        name:"Tom",
        feet:4,
    }
    a = &c1
    a.move()

    a = &dog{
        name:"wawa",
        feet:4,
    }
    a.move()

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容