go - RLock 已评估但未使用!为什么会出现这样的错误?
问题描述
为什么会出现这样的错误?使用的代码部分lock
如下
func variableModify() {
m.RLock
x++
m.RUnlock
fmt.Println("modi", x)
w.Done()
}
整个程序(下)
package main
import (
"fmt"
"sync"
)
var m = sync.RWMutex{}
var w = sync.WaitGroup{}
var x = 1
func main() {
for i := 0; i < 10; i++ {
w.Add(2)
go variableReadOnly()
go variableModify()
}
w.Wait()
}
func variableReadOnly() {
fmt.Println("read", x)
w.Done()
}
func variableModify() {
m.RLock
x++
m.RUnlock
fmt.Println("modi", x)
w.Done()
}
编译错误
./prog.go:28:3: m.RLock evaluated but not used
./prog.go:30:3: m.RUnlock evaluated but not used
解决方案
因为RLock
andRUnlock
是方法,你应该用括号来调用它们。否则,您只是在评估方法的值而不将其分配给任何东西,因此会发出警告。
更正的代码:
func variableModify() {
m.RLock()
x++
m.RUnlock()
fmt.Println("modi", x)
w.Done()
}
推荐阅读
- django - Add new subclass to CharField
- typescript - TS 接口 - 具有任何属性的对象
- angularjs - 未捕获的类型错误:$ 不是函数 - AngularJs
- c++builder-6 - Whats 在 Borland/Embarcadero CBuilder IDE 中标识了一个“单元”
- r - 带有线性回归的递归特征消除(插入符号),如何禁用拦截?
- arrays - Swift对数组中具有相同属性的四个不同类型的对象(AnyObject)进行排序
- c# - 当我运行 Windows 窗体应用程序时,用户 [MyUserName] 登录失败
- async-await - Axios 异步/等待流程
- r - 在 R 中作为 JSON 字符串列出
- python - 从元组转换为 pydantic 模型