我是Golang的新手,因此其中的分配使我感到疯狂:
import "sync"
type SyncMap struct {
lock *sync.RWMutex
hm map[string]string
}
func (m *SyncMap) Put (k, v string) {
m.lock.Lock()
defer m.lock.Unlock()
m.hm[k] = v, true
}
然后,我只需调用:
sm := new(SyncMap)
sm.Put("Test, "Test")
目前我遇到了一个空指针恐慌。
我通过使用另一个函数来解决问题,并在new()
之后立即调用它来绕过此问题:
func (m *SyncMap) Init() {
m.hm = make(map[string]string)
m.lock = new(sync.RWMutex)
}
但我想知道,是否有可能去掉这个样板式的初始化过程?
m.hm[k] = v, true
这没有意义(试图将两个值分配给一个变量),当问这个问题时,这怎么可能编译通过? - Nic