Golang for 循环中下划线(_) 的作用是什么?

Jiw*_*n94 4 go

我刚刚开始学习 Golang 语言!在 for 循环中,我看到有时添加下划线或不添加下划线。

无论是否添加_,我都得到了相同的结果。

package main

import (
    "fmt"
)

func main() {
    doSomething()
    sum := addValues(5, 8)
    fmt.Println("The sum is", sum)

    multiSum, multiCount := addAllValues(4, 7, 9)
    fmt.Println("multisum", multiSum)
    fmt.Println("multiCount", multiCount)
}

func doSomething() {
    fmt.Println("Doing Something")
}

func addValues(value1 int, value2 int) int {
    return value1 + value2
}

func addAllValues(values ...int) (int, int) {
    total := 0
    for _, v := range values {
        total += v
    }
    return total, len(values)
}
Run Code Online (Sandbox Code Playgroud)
func addAllValues(values ...int) (int, int) {
    total := 0
    for v := range values {
        total += v
    }
    return total, len(values)
}
Run Code Online (Sandbox Code Playgroud)

我只知道我不关心索引。这就是全部?或者还有什么我必须知道的?

我真的很感谢你的帮助!

mko*_*iva 9

对于range过度切片

  1. Infor v := range values {v切片中元素的索引。
  2. for _, v := range values {v实际的元素值。
  3. 其中for i, v := range values {i索引,v是元素。
  4. Infor i, _ := range values {i切片中元素的索引。

您可以运行这个游乐场示例来查看差异。


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
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息,请参阅规范