【发布时间】:2011-05-28 19:01:38
【问题描述】:
我是 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这毫无意义(试图为一个变量分配两个值),当被问到这个问题时,它是如何编译的?
标签: new-operator go