Я новичок в 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)
}
Но мне интересно, можно ли избавиться от этого шаблона инициализации?