尝试仅向数组添加唯一元素
Trying to add only unique elements to array
我正在尝试跟踪数组中的所有 "workers"。 m
是一个具有字符串字段 uuid 的结构,args
也是如此。我不确定这里出了什么问题,但是代码一次又一次地添加具有相同 uuid 的工作人员(在调用代码时)。
如有任何帮助,我们将不胜感激。
P.S:这段代码可能会被并发调用(但代码是互斥锁定的,所以这并不重要)
var pollingWrkr *Wrkr
pollingWrkr = nil
for idx, w := range m.workers {
if w.uuid == args.WorkerUUID {
pollingWrkr = &m.workers[idx]
break
}
}
// add new worker
if pollingWrkr == nil {
pollingWrkr = new(Wrkr)
m.workers = append(m.workers, *pollingWrkr) // add worker to list
log.Printf("worker %v added\n", args.WorkerUUID)
}
正如@mkropriva 所指出的,新的 Wrkr 的 uuid 从未被分配。
if pollingWrkr == nil {
pollingWrkr = new(Wrkr)
pollingWrkr.uuid = args.WorkerUUID // THIS HERE SOLVED IT!!!
m.workers = append(m.workers, *pollingWrkr) // add worker to list
log.Printf("worker %v added\n", args.WorkerUUID)
}
我正在尝试跟踪数组中的所有 "workers"。 m
是一个具有字符串字段 uuid 的结构,args
也是如此。我不确定这里出了什么问题,但是代码一次又一次地添加具有相同 uuid 的工作人员(在调用代码时)。
如有任何帮助,我们将不胜感激。
P.S:这段代码可能会被并发调用(但代码是互斥锁定的,所以这并不重要)
var pollingWrkr *Wrkr
pollingWrkr = nil
for idx, w := range m.workers {
if w.uuid == args.WorkerUUID {
pollingWrkr = &m.workers[idx]
break
}
}
// add new worker
if pollingWrkr == nil {
pollingWrkr = new(Wrkr)
m.workers = append(m.workers, *pollingWrkr) // add worker to list
log.Printf("worker %v added\n", args.WorkerUUID)
}
正如@mkropriva 所指出的,新的 Wrkr 的 uuid 从未被分配。
if pollingWrkr == nil {
pollingWrkr = new(Wrkr)
pollingWrkr.uuid = args.WorkerUUID // THIS HERE SOLVED IT!!!
m.workers = append(m.workers, *pollingWrkr) // add worker to list
log.Printf("worker %v added\n", args.WorkerUUID)
}