dounie0889 2016-11-09 10:02
浏览 148
已采纳

如何限制Golang中变量的值?

guys!

I know golang idiomatic don't have setter and getter. But I need to restrict value of variables in Golang.

I defined new type

type MyNewStringType string

And variables, that was defined as MyStringType, need to restrict value.

Variables of MyStringType can have only 3 values: "Yes", "No", "I don't know"

How can I do it in Golang? In Java, C++ I have setter and getter, but in Golang is not normal.

I know, I can create

type MyNewStringType struct {
   Variable string
}

and create

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")
  }

But I think it's wrong way.

  • 写回答

2条回答 默认 最新

  • dqsong2010 2016-11-09 14:43
    关注

    Short awnser:

    type MyString string
    const (
        YES MyString = "yes"
        NO = "no"
        DONTKNOW = "i dont know"
    )
    
    func foo(arg MyString){
        fmt.Print(arg)
    }
    
    foo(YES) //success, prints "yes"
    
    foo("jop") //fails to compile
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么