到目前为止,我正在学习Go并且玩得很开心。以下代码将总和输出为 45package mainimport "fmt"func main(){ //declare a slice numSlice := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10} var sum int = 0 for num := range numSlice { sum += num fmt.Println("num =", num) } fmt.Println("sum =", sum) }以下代码,其中我使用_空白标识符忽略 for 声明中的索引,输出总和为55//declare a slicenumSlice := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}var sum int = 0for _,num := range numSlice { sum += num fmt.Println("num =", num)}fmt.Println("sum =", sum) 这让我有点难住了。根据我的理解,空白标识符用于忽略切片索引。但它似乎也在移动索引,从而忽略切片中的最后一个元素。你能解释一下这里发生了什么,可能是为什么。我假设这不是错误并且是设计使然。Go 设计得非常好,那么这种行为的可能用例是什么?
1 回答
喵喔喔
TA贡献1735条经验 获得超5个赞
单个参数范围使用索引,而不是值。因为您的索引也从 0 增加到 9 使用范围和单个参数会将索引从 0 增加到 9 并给您45
package main
import "fmt"
func main(){
//declare a slice
numSlice := []int{0, 0, 0, 0}
var sum int = 0
for num := range numSlice {
sum += num
fmt.Println("num =", num)
}
fmt.Println("sum =", sum)
}
输出
num = 0
num = 1
num = 2
num = 3
sum = 6
- 1 回答
- 0 关注
- 172 浏览
添加回答
举报
0/150
提交
取消