【发布时间】:2016-11-09 10:02:47
【问题描述】:
我知道 Go 惯用的没有 setter 和 getter。但我需要限制 Go 中变量的值。
我定义了新类型
type MyNewStringType string
而定义为 MyStringType 的变量需要限制值。
MyStringType 的变量只能有 3 个值: “是”、“否”、“我不知道”
如何在 Golang 中做到这一点? 在Java、C++我都有setter和getter,但是在Golang中就不正常了。
我知道,我可以创造
type MyNewStringType struct {
Variable string
}
并创建
func(m *MyNewStringType) SetVariable(newVar string) error {
if newVar == "Yes" || newVar == "No" || newVar == "I don't know" {
m.Variable = newVar
return nil
} else {
return errors.New("Wrong value")
}
但我认为这是错误的方式。
【问题讨论】:
-
我相信这是正确的方法。只需将变量设为小写,这样就无法在包之外访问它。
标签: go