golang中的const方法?

时间:2015-05-12 16:07:37

标签: c++ go const

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

func (a *HugeStructType) AMethod() {
    ....
}

在C ++中,当我想制作这样一个方法,但保证它不会改变底层结构时,我将其声明为const

class HugeStructType {
    public:
        void AMethod() const
        ...
}

golang中是否有相同的内容?如果没有,是否有一种惯用的方法来创建一个与指针类型相关的方法,该方法已知不会改变底层结构?

2 个答案:

答案 0 :(得分:10)

没有。

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

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

答案 1 :(得分:0)

如果您想保证不更改方法的目标,则必须声明它不是指针。

    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}