我正在查看示例代码:https : //golang.org/pkg/net/rpc/type Arith intfunc (t *Arith) Multiply(args *Args, reply *int) error { *reply = args.A * args.B return nil}从 OOP 的角度来看,Multiply似乎是一个不访问Arith类中任何数据的静态方法;因为t未使用该变量。这是否意味着intintype Arith int没有任何意义?
2 回答
暮色呼如
TA贡献1853条经验 获得超9个赞
这与 OOP 没有任何关系,只是 rpc 包的约定通过从“对象”导出方法来工作(这里的对象表示具有非空方法集的任何值)
该int
是类型显著Arith
,但它不是在这个特殊的例子显著,因为接收器从来没有在引用的方法。
所以是的,这个例子有点像一个静态类,但尽量不要将 Java OOP 思想映射到 Go,因为 Go 非常不同,因为没有“类”或继承。
精慕HU
TA贡献1845条经验 获得超8个赞
另一种调用模拟静态方法的方法,尽管事实并非如此,如下所示:
package main
import "fmt"
type Arith struct {
}
func (Arith) Multiply(a float32, b float32) float32 {
return a * b
}
func main() {
result := (Arith).Multiply(Arith{}, 15, 25)
fmt.Println(result)
}
但从我的角度来看,这比将这个方法放在arith类之外的单独包中更难理解Arith
- 2 回答
- 0 关注
- 632 浏览
添加回答
举报
0/150
提交
取消