检查枚举中是否存在值

时间:2015-04-16 03:29:23

标签: go

我在我的应用中创建了类似以下的严格内容:

type Datatype int8

const (
    user Datatype = iota
    address
    test
)

var datatypes = [...]string{"User", "Address", "Test"}

func (datatype Datatype) String() string {
    return datatypes[datatype]
}

我希望能够通过命令行标志验证通过此枚举传递的值。

我以为我曾经看过像dtype == Datatype这样的东西,但我显然非常错误。

如果这不可能,我可以将这些值放在数组中。但是,我觉得enum方法更优雅。

1 个答案:

答案 0 :(得分:4)

从您的代码示例中看起来您正在尝试查看地图(而不是结构)是否包含特定键。

如果是,答案是here

  

双值赋值测试是否存在密钥:

i, ok := m["route"] 
     

在此声明中,分配了第一个值(i)   存储在密钥" route"下的值。如果该密钥不存在,我   是值类型的零值(0)。第二个值(ok)是一个bool   如果密钥存在于地图中,则为true,否则为false。

     

要在不检索值的情况下测试密钥,请使用下划线   第一个值的位置:

_, ok := m["route"]