go语言-interface的值接收和指针接受的区别

go语言-interface的值接收和指针接受的区别

初学go语言,学习到interface接口这里,记录一下值接收和指针接受的区别。

1.值接收

package main
import "fmt"
//使用值接收者和指针接收者区别

type animal interface {
	move()
	eat(string)
}

type cat struct {
	name string
	feet int8
}

//使用值接收者实现了接口的所有方法
func (c cat) move() {
	fmt.Println("猫")
}

func (c cat) eat(food string) {
	fmt.Printf("猫吃%s...\n", food)
}

func main() {
	var a1 animal
	c1 := cat{"tom", 4}  //cat
	c2 := &cat{"假老练", 4} //*cat
	a1 = c1
	fmt.Println(a1)
	a1 = c2
	fmt.Println(a1)
}

值输出的结果
在这里插入图片描述

2.指针接收

package main
import "fmt"
//使用值接收者和指针接收者区别

type animal interface {
	move()
	eat(string)
}

type cat struct {
	name string
	feet int8
}

//使用值接收者实现了接口的所有方法
func (c *cat) move() {
	fmt.Println("走猫步....")
}

func (c *cat) eat(food string) {
	fmt.Printf("猫吃%s...\n", food)
}

func main() {
	var a1 animal
	c1 := cat{"tom", 4}  //cat
	c2 := &cat{"假老练", 4} //*cat

	a1 = &c1
	fmt.Println(a1)
	a1 = c2
	fmt.Println(a1)

}

指针输出的结果
这是指针输出的结果

使用值接收者和指针接收者的区别:

使用值接收者实现接口:结构体类型和结构体指针类型的变量都能存。
使用指针接收者:只能存结构体指针类型的变量。

在实际应用中,大多数的应用都是使用指针接收者

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值