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接口赋值与方法接收者问题
[关闭]