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
我正在使用 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