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

Posted dqz_nihao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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)


指针输出的结果

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

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

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

以上是关于go语言-interface的值接收和指针接受的区别的主要内容,如果未能解决你的问题,请参考以下文章

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

Go语言值接收者方法和指针接收者方法

go语言中interface的实践

Go语言之interface

go语言接受者的选取

Go语言面向函数和接口编程