【发布时间】:2019-01-02 21:10:30
【问题描述】:
在 GoLang 中,具有以下结构和方法,我试图附加到属于嵌套在另一个结构中的结构的切片:
/* Tiers agent struct */
type Agent struct {
Registration string
}
/* Tiers queue struct */
type Queue struct {
Name string
Agents []Agent
}
/* Tiers struct */
type Tiers struct {
Queues []Queue
}
func (Q *Queue) AddAgent (agent_registration string) {
Q.Agents = append(Q.Agents, Agent{Registration: agent_registration})
}
func (T *Tiers) AddQueue(queue_name string, agent_registration string) {
var cur_queue *Queue
found_queue := false
/* Find queue by queue name */
for _ , queue := range T.Queues {
if queue.Name == queue_name {
found_queue = true
cur_queue = &queue
}
}
/* If queue not found, create a new one */
if found_queue == false {
T.Queues = append(T.Queues, Queue{Name: queue_name})
cur_queue = &(T.Queues[len(T.Queues)-1])
}
/* Add agent to queue (add tier) */
cur_queue.AddAgent(agent_registration)
}
我的业务规则是我会收到很多 {queue_name, agent_name} 对,我想构建一个结构,将共享相同“queue_name”的所有代理分组。所以,最终我想要这样的东西:
队列 1:['agent1', 'agent2', 'agent3', ...] 队列2:['agent4', 'agent5', ...]
我正在使用上面提到的结构对此进行建模。问题是当我尝试将代理添加到队列时,只有最后一次插入仍然存在。示例:
tiers.AddQueue('suport@default', '1000@default')
tiers.AddQueue('suport@default', '1003@default')
tiers.AddQueue('suport@default', '1001@default')
输出:{[{support@default [{1001@default}]}]}
当我想要的是输出是:
输出:{[{support@default [{1000@default},{1003@default}, {1001@default}]}]}
【问题讨论】: