douye4051 2018-12-30 09:12
浏览 28
已采纳

将返回错误分配给下划线

I've been reading some Golang code from github.com/lib/pq which provides drivers for interacting with a postgres database.

Among the code I came across this:

go func() {
    select {
    case <-done:
        _ = cn.cancel()
        finished <- struct{}{}
    case <-finished:
    }
}()

The cancel function looks like:

func (cn *conn) cancel() error

As far as I can tell, the underscore isn't being used as a static assertion about a type (and therefore the compiler doesn't evaluate any side effects as far as I can see (as in this example)) and it isn't a second parameter whereby the author may want to discard it.

In summary: Why assign the result of the cancel function (the error) to an underscore?

  • 写回答

2条回答 默认 最新

  • dongyuedaochen8415 2018-12-30 11:07
    关注

    Code must be correct. To be sure that code is correct, code must be readable.


    The First Rule of Go: Check for errors.


    func (cn *conn) cancel() error
    

    If I write

    cn.cancel()
    

    did I forget to check for errors or did I decide to discard the error value?

    However, if I write

    _ = cn.cancel()
    

    I did not forget to check for errors and I did decide to discard the error value.


    The Go Programming Language Specification

    Blank identifier

    The blank identifier is represented by the underscore character _. It serves as an anonymous placeholder instead of a regular (non-blank) identifier and has special meaning in declarations, as an operand, and in assignments.

    Assignments

    The blank identifier provides a way to ignore right-hand side values in an assignment:

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题