有这个结构type Square struct { Side int}这些与功能等效吗?func (s *Square) SetSide(side int) { s.Side = side}对比func SetSquareSide(s *Square, side int) { s.Side = side}我知道他们做同样的事情,但他们真的等价吗?我的意思是,有什么内部差异吗?在线试用:https : //play.golang.org/p/gpt2KmsVrz
2 回答
犯罪嫌疑人X
TA贡献2080条经验 获得超4个赞
这些“功能”以相同的方式运行,实际上它们的调用方式几乎相同。该方法被称为方法表达式,接收者作为第一个参数:
var s Square
// The method call
s.SetSide(5)
// is equivalent to the method expression
(*Square).SetSide(&s, 5)
该SetSide方法也可以用作方法值来满足函数签名func(int),而SetSquareSide不能。
var f func(int)
f = a.SetSide
f(9)
这是在方法集Square满足接口的明显事实之上
interface {
SetSide(int)
}
- 2 回答
- 0 关注
- 161 浏览
添加回答
举报
0/150
提交
取消