它避免了必须为返回值声明所有变量。
它被称为空白标识符 https://golang.org/doc/effective_go.html#blank.
As in:
_, y, _ := coord(p) // coord() returns three values; only interested in y coordinate
这样,您就不必声明一个您不会使用的变量:Go 不允许这样做。相反,使用“_”来忽略所述变量。
(the other '_' 用例用于导入 https://stackoverflow.com/q/26972615/6309)
由于它会丢弃返回值,因此当您只想检查返回值之一时会很有帮助,如“如何测试地图中的键是否存在? https://stackoverflow.com/a/2051011/6309“显示在”有效的围棋、地图 http://golang.org/doc/effective_go.html#maps":
_, present := timeZone[tz]
要测试地图中是否存在而不用担心实际值,您可以使用空白标识符,一个简单的下划线 (_
).
空白标识符可以分配或声明为任何类型的任何值,并且该值将被无害地丢弃。
要测试地图中的存在性,请使用空白标识符代替值的常用变量。
As Jsor https://stackoverflow.com/users/901827/jsor adds 在评论中 https://stackoverflow.com/questions/27764421/what-is-in-a-golang-declaration/27764432#comment43940322_27764432:
“普遍接受的标准”是将成员测试变量称为“ok”(与检查通道读取是否有效相同)
这允许您将其与测试结合起来:
if _, err := os.Stat(path); os.IsNotExist(err) {
fmt.Printf("%s does not exist\n", path)
}
你也会发现它也在循环中:
如果您只需要范围中的第二项(值),请使用空白标识符(下划线)来丢弃第一项:
sum := 0
for _, value := range array {
sum += value
}