我试图在数字列表中找到偶数,这是我的尝试: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条经验 获得超13个赞
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 关注
- 102 浏览
添加回答
举报
0/150
提交
取消