如何避免"for循环中未使用的变量"错误

Bru*_*uce 3 for-loop go unused-variables

如何避免使用代码之类的"for循环中未使用的变量"错误

ticker := time.NewTicker(time.Millisecond * 500)
go func() {
    for t := range ticker.C {
        fmt.Println("Tick at", t)
    }
}()
Run Code Online (Sandbox Code Playgroud)

如果我实际上不使用t变量?

Dav*_*rth 17

你不需要分配任何东西,只需使用for range,就像这样(在游戏中)

package main

import (
    "fmt"
    "time"
)

func main() {
    ticker := time.NewTicker(time.Millisecond * 500)
    go func() {
        for range ticker.C {
            fmt.Println("Tick")
        }
    }()
    time.Sleep(time.Second * 2)

}
Run Code Online (Sandbox Code Playgroud)


I15*_*159 10

使用预定义的_变量.它被命名为" 空标识符 ",并在您不需要变量的实际值时用作只写值.它类似于/dev/null在Unix中编写值.

for _ = range []int{1,2} {
    fmt.Println("One more iteration")
}
Run Code Online (Sandbox Code Playgroud)

可以使用任何类型的任何值分配或声明空白标识符,并且无害地丢弃该值.这有点像写入Unix/dev/null文件:它表示一个只写值,用作需要变量但实际值无关的占位符.

更新

来自Golang 文档:

直到Go 1.3,for-range循环有两种形式

for i, v := range x {
    ...
}
Run Code Online (Sandbox Code Playgroud)

for i := range x {
    ...
}
Run Code Online (Sandbox Code Playgroud)

如果一个人对循环值不感兴趣,只有迭代本身,仍然需要提一个变量(可能是空标识符,如_ =范围x),因为表格

for range x {
   ...
}
Run Code Online (Sandbox Code Playgroud)

在语法上是不允许的.

这种情况似乎很尴尬,因此从Go 1.4开始,无变量形式现在是合法的.这种模式很少出现,但代码可以更清晰.

  • [Go 1.4](https://golang.org/doc/go1.4#forrange)删除了对此的需求.`for range <range>`现在是完全有效的语法. (3认同)