我試圖在數字列表中找到偶數,這是我的嘗試:package mainimport "fmt"func main() { nums := []int{1, 2, 3, 4, 5, 6, 7} res := []int{} for n := range nums { if n%2 == 0 { res = append(res, n) } } fmt.Println(res)}這看起來很簡單;然而,當我運行程序時,我得到了結果[0 2 4 6]零從何而來?它必須來自空 slice res。我怎樣才能擺脫這個零?
1 回答

翻翻過去那場雪
TA貢獻2065條經驗 獲得超14個贊
for n := range nums {
? ? // ...
}
n不是nums切片的元素,它是索引。所以基本上你測試了元素的索引并將其添加到你的res結果切片中。
而是這樣做:
for _, n := range nums {
? ? // ...
}
通過此更改,輸出將是(在Go Playground上嘗試):
[2?4?6]
這在Spec: For statements?, For statements with range clause 中有詳細說明:
對于每次迭代,如果存在相應的迭代變量,則按如下方式生成迭代值:
Range expression? ? ? ? ? ? ? ? ? ? ? ? ? 1st value? ? ? ? ? 2nd value
array or slice? a? [n]E, *[n]E, or []E? ? index? ? i? int? ? a[i]? ? ? ?E
string? ? ? ? ? s? string type? ? ? ? ? ? index? ? i? int? ? see below? rune
map? ? ? ? ? ? ?m? map[K]V? ? ? ? ? ? ? ? key? ? ? k? K? ? ? m[k]? ? ? ?V
channel? ? ? ? ?c? chan E, <-chan E? ? ? ?element? e? E
- 1 回答
- 0 關注
- 141 瀏覽
添加回答
舉報
0/150
提交
取消