RLock 已评估但未使用!为什么会出现这样的错误?
RLock evaluated but not used ! Why such an error?
为什么会出现这样的错误?
使用 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
和RUnlock
是方法,调用时要带括号。否则,您只是评估方法的值而没有将其分配给任何东西,因此会出现警告。
更正后的代码:
func variableModify() {
m.RLock()
x++
m.RUnlock()
fmt.Println("modi", x)
w.Done()
}
为什么会出现这样的错误?
使用 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
和RUnlock
是方法,调用时要带括号。否则,您只是评估方法的值而没有将其分配给任何东西,因此会出现警告。
更正后的代码:
func variableModify() {
m.RLock()
x++
m.RUnlock()
fmt.Println("modi", x)
w.Done()
}