我是golang的新手,并且很难理解为什么我的代码中有一个错误而不是另一个状态.我已经有一段时间了,因为我已经覆盖了指针,所以我可能生锈了!
基本上我有一个存储库结构,我用来将一个对象存储在内存中,它有一个Store函数.
type chartsRepository struct {
mtx sync.RWMutex
charts map[ChartName]*Chart
}
func (r *chartsRepository) Store(c *Chart) error {
r.mtx.Lock()
defer r.mtx.Unlock()
r.charts[c.Name] = c
return nil
}
Run Code Online (Sandbox Code Playgroud)
所以它只是将RW互斥锁置于其上并将指针添加到地图,由标识符引用.
然后我有一个函数,它将基本上遍历这些对象的一部分,将它们全部存储在存储库中.
type service struct {
charts Repository
}
func (svc *service) StoreCharts(arr []Chart) error {
hasError := false
for _, chart := range arr {
err := svc.repo.Store(&chart)
// ... error handling
}
if hasError {
// ... Deals with the error object
return me
}
return nil
}
Run Code Online (Sandbox Code Playgroud)
上面的方法不起作用,看起来一切正常,但是在尝试以后访问数据时 …