go - Go 中的常量全局用户类型值
问题描述
我想安排计算一个在初始化后不会改变的值。
我会使用 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 中没有“final”或类似的修饰符。语言的简单性。
防止从外部更改变量的唯一方法是使其不导出,是的,那么您需要导出函数来获取它们的值。
一种解决方法可能是不使用变量而是使用常量。是的,你不能有结构常量,但如果结构很小,你可以使用它的字段作为单独的常量,例如:
const (
ScreenMinX = ScreenWidth / 2
ScreenMinY = ScreenHeight / 2
ScreenMaxX = ScreenWidth
ScreenMaxY = ScreenHeight
)
推荐阅读
- angular11 - Angular 11:Dexie 动态创建的商店,在对表执行搜索时出现 InvalidTableError
- java - 什么是默认的 Java GC 参数
- postgresql - 从 postgres 函数返回多个输出变量
- r - 校正多个估算数据集中的异方差
- workflow - NetSuite - 将订单自定义工作流更改状态转移到拒绝
- javascript - 值需要根据下拉列表中的选择进行更改
- java - Java JOOQ 与 SQL Server:缓存查询
- typo3 - TYPO3 画廊与灯箱
- vue.js - 图表js中分组垂直条形图中不同颜色的数据列标签
- javascript - 如何使用 js r jquery 在选项卡屏幕上为反应组件启用在网页中滑动