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的值接收和指针接受的区别的主要内容,如果未能解决你的问题,请参考以下文章