1 回答

TA貢獻1934條經(jīng)驗 獲得超2個贊
運算+
符未在 type 的值上定義interface{}
。int
您必須先從值中獲取類型值,interface{}
然后才能將其作為數(shù)字使用。
為此,您可以使用類型斷言??催@個例子:
s := []interface{}{1, 2, 3, "invalid"}
sum := 0
for _, v := range s {
? ? if i, ok := v.(int); ok {
? ? ? ? sum += i
? ? } else {
? ? ? ? fmt.Println("Not int:", v)
? ? }
}
fmt.Println("Sum:", sum)
輸出(在Go Playground上嘗試):
Not?int:?invalid Sum:?6
上面的例子只處理int
數(shù)字,沒有別的。如果你想“支持”多種數(shù)字類型,更方便的方法是使用類型開關(guān):
s := []interface{}{1, int32(2), int8(3), "invalid"}
sum := 0
for _, v := range s {
? ? switch i := v.(type) {
? ? case int:
? ? ? ? sum += i
? ? case int32:
? ? ? ? sum += int(i)
? ? case int8:
? ? ? ? sum += int(i)
? ? default:
? ? ? ? fmt.Println("Not int:", v)
? ? }
}
fmt.Println("Sum:", sum)
輸出是一樣的。在Go Playground試試這個。
- 1 回答
- 0 關(guān)注
- 186 瀏覽
添加回答
舉報