试图仅将唯一元素添加到数组[closed]

问题描述 投票:2回答:1
我试图跟踪阵列中所有的“工人”。 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) }

arrays pointers go concurrency mutex
1个回答
2
投票
正如@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) }

© www.soinside.com 2019 - 2024. All rights reserved.