如何摆脱Go中的int切片中的零值?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何摆脱Go中的int切片中的零值?相关的知识,希望对你有一定的参考价值。
我试图在数字列表中找到偶数,这是我的尝试:
package main
import "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]
零来自哪里?它必须来自空切片res
。我该怎样摆脱这个零?
答案
for n := range nums {
// ...
}
n
不是nums
切片的元素,它是索引。所以基本上你测试并将元素的索引添加到你的res
结果切片中。
而是这样做:
for _, n := range nums {
// ...
}
通过此更改,输出将是(在Go Playground上尝试):
[2 4 6]
这在Spec: For statements中有详细说明,对于带有范围子句的语句:
对于每次迭代,如果存在相应的迭代变量,则按如下方式生成迭代值:
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
以上是关于如何摆脱Go中的int切片中的零值?的主要内容,如果未能解决你的问题,请参考以下文章