go-staticcheck:应该使用简单的通道 send/receive 而不是单个案例的 select (S1000)

go-staticcheck: should use a simple channel send/receive instead of select with a single case (S1000)

我正在使用 Go 1.16.4。我正在尝试处理这样的代码:

func (pool *myConnPool) GetPooledConnection() (*myConnection, error) {
    go func() {
        conn, err := pool.createConn()
        if err != nil {
            return
        }
        pool.connections <- conn
    }()
    select { // <<<< golint warning here
    case conn := <-pool.connections:
        return pool.packConn(conn), nil
    }
}

我收到以下 Go linter 警告:should use a simple channel send/receive instead of select with a single case (S1000) 在代码中标记的位置。谁能解释一下如何解决这个问题?我对 Go 频道还不是很熟悉。

linter 告诉你,你使用 select 是没有意义的,只有一个 case。 要解决此问题,请替换为:

select {
case conn := <-pool.connections:
    return pool.packConn(conn), nil
}

与:

conn := <-pool.connections
return pool.packConn(conn), nil

甚至:

return pool.packConn(<-pool.connections), nil