为了账号安全,请及时绑定邮箱和手机立即绑定

为什么使用 _ 空白标识符进行范围迭代会产生不同的值

为什么使用 _ 空白标识符进行范围迭代会产生不同的值

Go
慕的地10843 2021-08-23 17:15:37
到目前为止,我正在学习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


查看完整回答
反对 回复 2021-08-23
  • 1 回答
  • 0 关注
  • 172 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信