教程集 www.jiaochengji.com
教程集 >  Golang编程  >  golang教程  >  正文 Go语言调用接口方法的值传递与指针传递的区别

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

发布时间:2021-05-10   编辑:jiaochengji.com
教程集为您提供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语言接口断言的使用
指针和固定大小缓冲区只能在不安全的上下文使用_「GCTT 出品」Go 语言机制之栈和指针...
指针和参数传递(Go语言)
Go 语言机制之栈和指针
关于golang面向接口
想系统学习GO语言(Golang
基于类型系统的面向对象编程语言Go
Go语言面组合式向对象编程基础总结
GO接口赋值与方法接收者问题

[关闭]
~ ~