登录
首页 >  Golang >  Go问答

带范围限制的 typedef

来源:stackoverflow

时间:2024-04-09 14:18:34 105浏览 收藏

一分耕耘,一分收获!既然都打开这篇《带范围限制的 typedef》,就坚持看下去,学下去吧!本文主要会给大家讲到等等知识点,如果大家对本文有好的建议或者看到有不足之处,非常欢迎大家积极提出!在后续文章我会继续更新Golang相关的内容,希望对大家都有所帮助!

问题内容

在 go 中我们可以说:

type Month int

创建一个基于 int 的新类型。

是否也可以说该类型允许的值范围是 1 - 12,并保证不能分配 < 1 或 > 12 的值?


解决方案


不,无论您是否将 int 定义为自定义类型,都不能对其进行限制。您可以获得的最接近的结果类似于以下代码,使用名为 iota 的构造

type month int

const (
    jan month = iota + 1
    feb
    mar
    apr
    may
    jun
    jul
    aug
    sep
    oct
    nov
    dec
)

func main() {
    fmt.println(jan, feb, mar)
}

这将打印 1 2 3。它还有很多用途,您可以在这里查找更多信息https://splice.com/blog/iota-elegant-constants-golang/

这并不能保证您不能为结果变量分配随机值,但只要您在任何地方使用定义的常量就应该没问题。

您可以通过使用来限制对单个包的访问用于存储值的未导出变量。例如,

package date

type Month struct {
    month int
}

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

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