如何避免" for循环中未使用的变量"像
这样的代码出错ticker := time.NewTicker(time.Millisecond * 500)
go func() {
for t := range ticker.C {
fmt.Println("Tick at", t)
}
}()
如果我实际上没有使用t
变量?
答案 0 :(得分:17)
您无需指定任何内容,只需使用for range
,就像这样(on play)
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)
}
答案 1 :(得分:10)
使用预定义的_
变量。它被命名为" blank identifier"并且当您不需要变量的实际值时,将其用作只写值。它类似于在Unix中将值写入/dev/null
。
for _ = range []int{1,2} {
fmt.Println("One more iteration")
}
可以使用任何类型的任何值分配或声明空白标识符,并且无害地丢弃该值。这有点像写入Unix / dev / null文件:它表示一个只写值,用作需要变量但实际值无关的占位符。
来自Golang docs:
直到Go 1.3,for-range循环有两种形式
for i, v := range x {
...
}
和
for i := range x {
...
}
如果一个人对循环值不感兴趣,只有迭代本身,仍然需要提一个变量(可能是空白标识符,如_ =范围x),因为表格
for range x {
...
}
在语法上不允许。
这种情况看起来很尴尬,因此从Go 1.4开始,无变量形式现在是合法的。这种模式很少出现,但代码可以更清晰。