3 回答
TA贡献1895条经验 获得超7个赞
它避免了必须为返回值声明所有变量。
它被称为空白标识符。
如:
_, y, _ := coord(p) // coord() returns three values; only interested in y coordinate
这样,你就不必声明一个你不会使用的变量:Go 不会允许它。相反,使用“_”来忽略所述变量。
(另一个“ _”用例用于导入)
由于它丢弃了返回值,因此当您只想检查返回值之一时,它会很有帮助,如“ Effective Go, map ”中所示的“ How to test key exist in a map? ”:
_, present := timeZone[tz]
要测试地图中是否存在而不用担心实际值,您可以使用空白标识符,一个简单的下划线 ( _)。
可以使用任何类型的任何值分配或声明空白标识符,并无害地丢弃该值。
要测试地图中的存在,请使用空白标识符代替值的常用变量。
正如Jsor在评论中添加的那样:
“普遍接受的标准”是将成员资格测试变量称为“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
}
TA贡献1853条经验 获得超9个赞
Go 编译器不允许您创建从未使用过的变量。
for i, value := range x {
total += value
}
上面的代码将返回一个错误信息“我已声明但未使用”。
由于我们不在循环中使用 i ,因此需要将其更改为:
for _, value := range x {
total += value
}
TA贡献1868条经验 获得超4个赞
_
是空白标识符。这意味着它应该分配的值被丢弃。
这里是example
被丢弃的key的值。第二行代码将丢弃存在布尔值并将值存储在prs
.
所以只检查地图中的存在,您可以丢弃该值。这可用于将地图用作集合。
- 3 回答
- 0 关注
- 337 浏览
添加回答
举报