Go 一般方法与接口方法接收者的差异详解
作者:cainmusic 发布时间:2024-04-27 15:38:52
标签:Go,接收差异,一般方法,接口方法
Go语言中,一般方法接收者和接口方法接收者有一定区别
在一般方法中
若定义的接收者是值,可以使用值或者指针进行调用;
若定义的接收者是指针,可以使用值或者指针进行调用。
在接口方法中
若定义的接收者是值,则既可以用接口值调用,也可以用接口指针调用;
若定义的接收者是指针,则只能用接口指针调用,不能用接口值调用。
如下例:
package main
import "fmt"
type T struct {
S string
}
type I interface {
A()
B()
}
func (t T) A() {
fmt.Println(t.S)
}
func (t *T) B() {
fmt.Println(t.S)
}
func main() {
t := T{"normal method"}
pt := &t
t.A()
t.B()
pt.A()
pt.B()
//var i I = T{"interface method"}
var i I = &T{"interface method"}
i.A()
i.B()
}
若使用var i I = &T{"interface method"}
则可以执行。
若使用var i I = T{"interface method"}
则报错:
./prog.go:30:6: cannot use T{...} (type T) as type I in assignment:
T does not implement I (B method has pointer receiver)
提示B方法用的是指针接收者(pointer receiver),无法被接口值调用。
那么,为何会有这样的差异?更多关于Go 方法不同接收者差异的资料请关注asp之家其它相关文章!
来源:https://segmentfault.com/a/1190000041260070


猜你喜欢
- 1.性能Py3.0运行 pystone benchmark的速度比Py2.5慢30%。Guido认为Py3.0有极大的优化空间,在字符串和整
- MySQL低调宣布它将不再把MySQL企业版服务器作为一个tar包发布,而这距离这个公司宣布将MySQL分为免费版和付费版的时间还不到一年。
- 我们打开Google的时候可能大家会发现,无论你输入Google的任何网址,它都根据你使用的语言自动判断并跳转到不同的语言界面。也就是你用不
- Pycharm要激活至2099年,首先必须要先找到这个东西:JetbrainsCrack-2.6.10-release-enc.jar,我上
- sys.path模块搜索路径的字符串列表。由环境变量PYTHONPATH初始化得到。sys.path[0]是调用Python解释器的当前脚本
- 先来介绍一些不使用脚本我们直接使用命令备份与还原oracle数据库Oracle数据备份:步骤 1 备份用户数据。1.使用linux系统下的数
- 我们开发数据库应用时,常常需要用到模糊查询。如果同一个条件需要匹配很多字段怎么办呢?通常,程序员会每个字段都在SQL中“field like
- 我这里总结了判断记录是否存在的常用方法: sql语句:select count(*) from tablename; 然后读取count(*
- 编写Python SDK代码工程目录结构├──── easyhttp
- 实例如下:# bytes object b = b"example" # str object s = "ex
- 废话不多说,直接上代码吧!# 矩阵操作# 将矩阵拉成向量import numpy as npx = np.arange(10).reshap
- 前言:我们学习项目的时难免遇到一些问题,比如;遇到一个功能需要随机返回多条不重复的数据,也可以是拿了就用,下次再需要时已经忘记如何使用了;虽
- 通常说到外键,只会提到“外键的目的是确定资料的参考完整性(referential integrity)。”,但是外键具体包含哪些动作和含义呢
- 使用 Windows 系统一大好处是它的应用太丰富了,甚至强大的 GPU 也能在闲暇时间做点其它「工作」。然而与 Linux 或 macOS
- 今天抽空学习了一下之前了解过的pillow库,以前看到的记得这个库可以给图片上加文字加数字,还可以将图片转化成字符画,不过一直没有找时间去学
- 1. glob文件名模式匹配尽管glob API很小,但这个模块的功能却很强大。只要程序需要查找文件系统中名字与某个模式匹配的一组文件,就可
- 使用UNION多数SQL查询都只包含一个或多个表中返回数据的单条SELECT语句。MySQL也允许执行多个查询(多条SELECT语句),并将
- 声明本文章为个人拙见,仅仅提供参考,不一定正确,各位大佬可以发表自己的意见。题目描述考虑到在虚拟机部署中资源提供商通常希望自己的收益最大化,
- 在NLP中,数据清洗与分词往往是很多工作开始的第一步,大多数工作中只有中文语料数据需要进行分词,现有的分词工具也已经有了很多了,这里就不再多
- 最初打算使用scroll-view实现,效果好、流畅、有惯性滑动,但由于滚动条没法去掉、无法实现上下层的帧布局,最终放弃了。还是自己写个吧,