为了账号安全,请及时绑定邮箱和手机立即绑定

go语言中的静态类方法

go语言中的静态类方法

Go
蝴蝶不菲 2021-12-06 17:11:20
我正在查看示例代码: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 非常不同,因为没有“类”或继承。


查看完整回答
反对 回复 2021-12-06
?
精慕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


查看完整回答
反对 回复 2021-12-06
  • 2 回答
  • 0 关注
  • 632 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信