登录
首页 >  Golang >  Go问答

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

来源:stackoverflow

时间:2024-04-19 16:21:34 145浏览 收藏

知识点掌握了,还需要不断练习才能熟练运用。下面golang学习网给大家带来一个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 中的常量全局用户类型值》文章吧,也可关注golang学习网公众号了解相关技术文章。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>