Golang中的const方法
const methods in golang?
在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}
相关文章:
- 如何在声明为 const 的方法中更改类成员
- 具有参数 (const T *&) 或 (T * &) 或 (const T * const &) 或 (T * const &) 的方法
- 从 const 对象访问非 const 方法
- 为什么我可以调用一个从const方法更改成员的方法
- 使用新的c++返回值语法的Const方法
- MSVC使用constexpr-if从可变模板方法中的基本模板参数中吞下const
- const_cast const 方法中的"this"将"this"分配给外部变量?
- 初始化 const 成员的正确方法
- const 方法使用引用修改对象
- 从类方法返回 "const char*" 作为 std::string&
- 从"wcslen"替换到"strnlen_s"时,用"const char*"进行类型转换是正确的方法吗?
- 将const指针(EVP_MD)保存到变量中,以将其重新使用为类方法(HMAC)
- 为什么 constexpr 假设我的方法就是 const
- 正确的方法通过巨大的const对象的向量
- 使用静态方法初始化 const 类字段的做法是好是坏
- 为什么重写方法并将 const 添加到参数类型有效
- CPP主方法const声明
- 如何基于模板参数制作方法const
- 命名重载的getter方法:const和nonconst
- 声明Get方法const时出错