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

Playground Link

因为RLockRUnlock是方法,调用时要带括号。否则,您只是评估方法的值而没有将其分配给任何东西,因此会出现警告。

更正后的代码:

func variableModify() {
    m.RLock()
    x++
    m.RUnlock()
    fmt.Println("modi", x)
    w.Done()
}