在golang中,您通常希望声明指针类型关联的方法,因为您不想复制一个庞大的结构:
func (a *HugeStructType) AMethod() {
....
}
在C++中,当我想要创建这样一个方法,但又保证它没有改变底层结构时,我声明它为const
class HugeStructType {
public:
void AMethod() const
...
}
在金刚有等价物吗?如果没有,是否有一种惯用的方法来创建不改变底层结构的指针类型相关的方法?
发布于 2015-05-12 08:26:37
不没有。
另外,你认为“因为你不想复制一个巨大的结构”的论点经常是错误的。很难想出真正大的结构,方法调用期间的复制是应用程序的瓶颈(请记住,切片和映射都很小)。
如果你不想改变你的结构(当你想到例如地图或指针字段时,这是一个复杂的概念):不要这样做。或者复制一份。如果你担心的是性能:衡量。
发布于 2017-03-03 21:56:11
如果要保证不更改方法的目标,则必须声明它不是指针。
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}
https://stackoverflow.com/questions/30196175
复制