猿问

尝试仅向数组添加唯一元素

我正在尝试跟踪数组中的所有“工人”。m是一个具有字符串字段 uuid 的结构,args. 我不确定这里出了什么问题,但是代码一次又一次地添加具有相同 uuid 的工人(当调用代码时)。


任何帮助,将不胜感激。


PS:这段代码可能会被同时调用(但代码是互斥锁的,所以没关系)


    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)

    }


慕仙森
浏览 109回答 1
1回答

叮当猫咪

正如@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)    }
随时随地看视频慕课网APP

相关分类

Go
我要回答