Golang中的const方法

const methods in golang?

本文关键字:方法 const 中的 Golang      更新时间:2023-10-16

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

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

在C 中,当我想制作这样的方法时,但是保证它不会突变基础结构,我将其声明为const

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

Golang是否有等效的?如果没有,是否有一种惯用方法来创建指针型相关方法,该方法已知不更改基础结构?

没有。

另外您的论点是"因为您不想复制周围的巨大结构"是错误的。很难提出真正很大的结构,在方法调用过程中副本是应用程序瓶颈(请记住,切片和地图很小)。

如果您不想突变结构(当您考虑地图或指针字段时,一个复杂的概念):不要这样做。或制作副本。如果您担心性能:测量。

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

    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}