gpt4 book ai didi

go - Go 中的常量全局用户类型值

转载 作者:IT王子 更新时间:2023-10-29 01:50:36 26 4
gpt4 key购买 nike

我想安排计算一个在初始化后不会改变的值。

我会使用 const,但 Go 将 const 限制为内置类型,IIUC。

所以我想我会使用 var,并在 init() 中计算它们的初始值

var (
// ScreenBounds is the visible screen
ScreenBounds types.Rectangle

// BoardBounds is the total board space
BoardBounds types.Rectangle
)

func init() {
ScreenBounds := types.RectFromPointSize(
types.Pt(-ScreenWidth/2, 0),
types.Pt(ScreenWidth, ScreenHeight))

BoardBounds := ScreenBounds
BoardBounds.Max.Y += TankSpeed * TotalFrames
}

这很好 - 但除了将变量更改为未导出的名称,然后使用函数访问器返回它们的值之外,是否有一种方法可以在计算后“锁定”值?

最佳答案

不,没有。变量被称为是因为它们的值可以改变。在 Go 中没有“最终”或类似的修饰符。语言简洁。

保护变量不被外部更改的唯一方法是使其不导出,是的,然后您需要导出函数来获取它们的值。

解决方法是不使用变量,而是使用常量。是的,你不能有结构常量,但如果结构很小,你可以使用它的字段作为单独的常量,例如:

const (
ScreenMinX = ScreenWidth / 2
ScreenMinY = ScreenHeight / 2
ScreenMaxX = ScreenWidth
ScreenMaxY = ScreenHeight
)

关于go - Go 中的常量全局用户类型值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56380111/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com