次のコードは、次のエラーでクラッシュします。RWMutexの初期化はgolangでクラッシュしますか?
package main
import (
"sync"
)
var foo *sync.RWMutex
func main() {
foo.Lock()
}
出力:
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0xffffffff addr=0x0 pc=0x8125c]
goroutine 1 [running]:
sync.(*RWMutex).Lock(0x0, 0x104000f0)
/usr/local/go/src/sync/rwmutex.go:86 +0x1c
main.main()
/tmp/sandbox093456788/main.go:11 +0x20
Program exited.
それは発生しません、あなたがfoo変数の初期化のため
var foo = new(sync.RWMutex)
var foo sync.RWMutex
次の行のいずれかを使用します。
歓迎は、私はあなたが行くツアーを見てお勧めしますhttps://tour.golang.org/welcome/1 –