Ram*_*ino 3 error-handling go pq
我一直在阅读github.com/lib/pq中的一些Golang代码,它提供了与postgres数据库交互的驱动程序.
在代码中,我碰到这个:
go func() {
select {
case <-done:
_ = cn.cancel()
finished <- struct{}{}
case <-finished:
}
}()
Run Code Online (Sandbox Code Playgroud)
取消功能如下:
func (cn *conn) cancel() error
Run Code Online (Sandbox Code Playgroud)
据我所知,下划线不被用作关于类型的静态断言(因此编译器不会评估任何副作用,就我所见(如本例所示))并且它不是'作为作者可能想要丢弃它的第二个参数.
总结:为什么要将取消函数的结果(错误)分配给下划线?
代码必须正确.为了确保代码正确,代码必须是可读的.
第一条规则:检查错误.
func (cn *conn) cancel() error
Run Code Online (Sandbox Code Playgroud)
如果我写
cn.cancel()
Run Code Online (Sandbox Code Playgroud)
我忘记检查错误还是我决定丢弃错误值?
但是,如果我写的话
_ = cn.cancel()
Run Code Online (Sandbox Code Playgroud)
我没有忘记检查错误,我确实决定丢弃错误值.
空白标识符
空白标识符由下划线字符_表示.它充当匿名占位符而不是常规(非空)标识符,并且在声明,操作数和赋值中具有特殊含义.
分配
空白标识符提供了一种忽略赋值中右侧值的方法:
| 归档时间: |
|
| 查看次数: |
121 次 |
| 最近记录: |