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

golang中的const方法?

golang中的const方法?

Go
沧海一幻觉 2021-10-04 17:24:12
在 golang 中,通常你想声明一个指针类型关联的方法,因为你不想复制一个巨大的结构体:func (a *HugeStructType) AMethod() {    ....}在 C++ 中,当我想创建这样一个方法,但保证它不会改变底层结构时,我声明了它const:class HugeStructType {    public:        void AMethod() const        ...}golang 中是否有等价物?如果没有,是否有一种惯用的方法来创建已知不会改变底层结构的指针类型关联方法?
查看完整描述

2 回答

?
拉风的咖菲猫

TA贡献1995条经验 获得超2个赞

不,那里没有。

另外你的论点“因为你不想复制一个巨大的结构”经常是错误的。很难想出真正那么大的结构,方法调用期间的副本是应用程序瓶颈(请记住,切片和映射很小)。

如果您不想改变您的结构(当您考虑例如映射或指针字段时,这是一个复杂的概念):不要这样做。或者复印一份。如果您担心性能:衡量。


查看完整回答
反对 回复 2021-10-04
?
慕神8447489

TA贡献1780条经验 获得超1个赞

如果你想保证不改变方法的目标,你必须声明它不是一个指针。


    package main


    import (

            "fmt"

    )


    type Walrus struct {

            Kukukachoo int

    }


    func (w Walrus) foofookachu() {

            w.Kukukachoo++

    }


    func main() {

            w := Walrus { 3 }

            fmt.Println(w)

            w.foofookachu()

            fmt.Println(w)

    }


    ===


    {3}

    {3}



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

添加回答

举报

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