2015-04-16 31 views
1

存在價值我創建了一個嚴格的像我的應用程序如下:檢查枚舉

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這樣的東西被使用,但我顯然非常錯誤。

如果這是不可能的,我可以去把這些值放在一個數組中。不過,我覺得枚舉方法更優雅。

+1

你能否澄清「驗證通過命令行標誌,通過針對此枚舉值「?你是否試圖查看是否在命令行上傳遞了一個標誌?驗證用戶輸入?檢查結構中的非默認值? – maerics

+1

除了上述..你能告訴我們這個你所指的「結構」嗎?這裏的結構如何發揮作用? ...你確定你不只是在尋找一張地圖嗎? –

+0

我正在努力做下面的@IanNaN回答。謝謝maerics和Simon,我對這種混亂表示歉意。 – RockyMountainHigh

回答

4

從您的代碼示例看起來好像您試圖查看映射(而不是結構)是否包含特定的鍵。

如果是的話,答案是here

一鍵存在的兩值分配測試:

i, ok := m["route"] 

在這份聲明中,第一個值(i)被分配 存儲在「路線」關鍵字下的值。如果該密鑰不存在,我 是值類型的零值(0)。第二個值(ok)是bool ,如果密鑰存在於地圖中,則爲true,否則爲false。

要測試的關鍵不檢索值,在 地方的第一個值使用下劃線:

_, ok := m["route"]