这两个Go代码是否相同?

时间:2016-01-28 15:14:25

标签: go

拥有此结构

weight

这些功能是否相同?

15

VS

View

我知道他们相同,但他们真的相同吗?我的意思是,是否存在任何内部差异?

在线试用:{{3}}

2 个答案:

答案 0 :(得分:6)

据我所知,他们的工作方式相同。

一个区别是只有第一个可以满足接口规范。

答案 1 :(得分:3)

这些“功能”以同样的方式,实际上它们以几乎相同的方式被调用。该方法称为method expression,接收方为第一个参数:

var s Square

// The method call
s.SetSide(5)
// is equivalent to the method expression
(*Square).SetSide(&s, 5)

SetSide方法也可以用作method value来满足函数签名func(int),而SetSquareSide则不能。

var f func(int)

f = a.SetSide
f(9)

这是明显的事实,即Square的方法集满足接口

interface {
    SetSide(int)
}