2 回答

TA貢獻1797條經(jīng)驗 獲得超6個贊
測試兩個鍵:
columnsOrRows, ok := mapped["columns"].([]interface{})
if !ok {
columnsOrRows, ok = mapped["rows"].([]interface{})
}
if ok {
for _, columnOrRow := range columnsOrRows {
if columnOrRowValueIsString, ok = columnOrRow.(string); ok {
columnOrRowArray = append(columnOrRowArray, columnOrRowValueIsString)
}
}
}

TA貢獻1794條經(jīng)驗 獲得超7個贊
我不得不進行更廣泛的檢查。檢查地圖中是否存在任何可能的鍵(超過 2 個)。最后編寫了一個實用函數(shù)來完成任務并使代碼保持可讀性。
func StringInSlice(s string, list []string) bool {
for _, item := range list {
if item == s {
return true
}
}
return false
}
func AnyKeyInMap(keys []string, keyMap map[string]interface{}) bool {
for k := range keyMap {
if StringInSlice(k, keys) {
return true
}
}
return false
}
用法是:
mapped := make(map[string]interface{})
mapped["rows"] = true
if AnyKeyInMap([]string{"rows", "columns"}, mapped) {
fmt.Println("exists")
}
你可以在這里玩: https ://play.golang.org/p/pz64YidEGMK
- 2 回答
- 0 關注
- 141 瀏覽
添加回答
舉報