当前位置: > > > > Go 中的常量全局用户类型值
来源:stackoverflow
2024-04-19 16:21:34
0浏览
收藏
知识点掌握了,还需要不断练习才能熟练运用。下面给大家带来一个Golang开发实战,手把手教大家学习《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 )
文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《Go 中的常量全局用户类型值》文章吧,也可关注公众号了解相关技术文章。