猿问

go-staticcheck:应使用简单的通道发送/接收,而不是选择单个案例

我使用的是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)


catspeake
浏览 1084回答 1
1回答

慕勒3428872

linter告诉你,你的使用是没有意义的,只有一个。要解决此问题,请替换以下内容:selectcaseselect {case conn := <-pool.connections:&nbsp; &nbsp; return pool.packConn(conn), nil}跟:conn := <-pool.connectionsreturn pool.packConn(conn), nil甚至:return pool.packConn(<-pool.connections), nil
随时随地看视频慕课网APP

相关分类

Go
我要回答