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 语言函数引用传递值