Jquery中文网 www.jquerycn.cn
Jquery中文网 >  后端编程  >  Go语言  >  正文 Go语言调用接口方法的值传递与指针传递的区别

Go语言调用接口方法的值传递与指针传递的区别

发布时间:2021-05-10   编辑:www.jquerycn.cn
jquery中文网为您提供Go语言调用接口方法的值传递与指针传递的区别等资源,欢迎您收藏本站,我们将为您提供最新的Go语言调用接口方法的值传递与指针传递的区别资源

零 结论

接收者类型接收者值
指针只能为指针
值与类型都可以

一 定义接口

type notifier interface {
 	notify()
}

二 定义一个方法

func sendNotification(n notifier) {
	 n.notify()
 }

三 指针传递

type user struct {
	 name  string
	email string
}
func (u *user) notify() { // 这里的接收者是指针类型
 	fmt.Println(u.name, u.email)
 }

1 此时如果调用 sendNotification
传递的是值,便会编译失败

u := user{"Bill", "bill@email.com"} 
sendNotification(u) // 传递的是值

传递的是指针,便会编译通过

u := user{"Bill", "bill@email.com"} 
sendNotification(&u) // 传递的是指针

四 值类型传递

type user struct {
	 name  string
	email string
}
func (u user) notify() { // 这里的接收者是值
 	fmt.Println(u.name, u.email)
 }

无论传递值还是指针都会通过

u := user{"Bill", "bill@email.com"} 
sendNotification(u) // 传递的是值
u := user{"Bill", "bill@email.com"} 
sendNotification(&u) // 传递的是指针
到此这篇关于“Go语言调用接口方法的值传递与指针传递的区别”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!

您可能感兴趣的文章:
Go语言调用接口方法的值传递与指针传递的区别
想系统学习GO语言(Golang
go语言接口断言的使用
基于类型系统的面向对象编程语言Go
Go 语言机制之栈和指针
GO接口赋值与方法接收者问题
Golang语言基础教程:函数的参数
276-go语言golang面试题知识点
Go学习笔记:接口实现与指针
Go 语言函数引用传递值

[关闭]