golang中的const方法?

在 golang 中,通常你想声明一个指针类型关联的方法,因为你不想复制一个巨大的结构体:


func (a *HugeStructType) AMethod() {

    ....

}

在 C++ 中,当我想创建这样一个方法,但保证它不会改变底层结构时,我声明了它const:


class HugeStructType {

    public:

        void AMethod() const

        ...

}

golang 中是否有等价物?如果没有,是否有一种惯用的方法来创建已知不会改变底层结构的指针类型关联方法?


沧海一幻觉
浏览 239回答 2
2回答

拉风的咖菲猫

不,那里没有。另外你的论点“因为你不想复制一个巨大的结构”经常是错误的。很难想出真正那么大的结构,方法调用期间的副本是应用程序瓶颈(请记住,切片和映射很小)。如果您不想改变您的结构(当您考虑例如映射或指针字段时,这是一个复杂的概念):不要这样做。或者复印一份。如果您担心性能:衡量。

慕神8447489

如果你想保证不改变方法的目标,你必须声明它不是一个指针。    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}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go