亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

增量器不起作用

增量器不起作用

Go
飲歌長嘯 2021-04-04 17:15:50
我有一些應該增加計數的代碼。這是包含count變量的結構:type PipelineData struct {    nodeData          map[string]map[string]int    lastBurstResults  map[string]map[string]string    burstReady        map[string]bool    lastExecutionTime map[string]time.Time    currentNodeSize  uint64}如您所見,有一個名為的成員currentNodeSize。此變量旨在在每次addNodeData調用函數時增加。您可以看到該函數addNodeData調用該函數addCount,然后使用原子增量器。func (p PipelineData) addNodeData(key string) {    nodeSlot := clusterScenario.GetNodeSlotByHashSlot(key)    i:=p.nodeData[nodeSlot][key]    i++     p.nodeData[nodeSlot][key]=i     p.addCount()    fmt.Println("Adding node count ",p.currentNodeSize)}func (p PipelineData) addCount(){    atomic.AddUint64(&p.currentNodeSize, 1) }不幸的是,當我運行此命令時:p.addNodeData("{pipelinetest}.key");p.addNodeData("{pipelinetest}.key");p.addNodeData("{pipelinetest}.key");p.addNodeData("{pipelinetest}.key");p.addNodeData("{pipelinetest}.key");    p.addNodeData("{pipelinetest}.key");                Dump(p.currentNodeSize) 輸出為0。這是PipelineData結構的初始化:p = &PipelineData{  nodeData:make(map[string]map[string]int,0),  lastBurstResults:make(map[string]map[string]string,0),  burstReady:make(map[string]bool,0),  lastExecutionTime:make(map[string]time.Time,0),  currentNodeSize:0,}for i,_ := range clusterScenario.masterNodes{    p.nodeData[i]=make(map[string]int,0)}       我了解社區已要求我進行研究。我不知道該怎么辦。任何幫助,將不勝感激。我還嘗試了使用變量的通用增量器,并且產生了相同的結果,這就是為什么我嘗試使用原子增量器的原因
查看完整描述

1 回答

?
ITMISS

TA貢獻1871條經驗 獲得超8個贊

addCount需要一個值接收器,而不是一個指針,因此它對結構的副本進行操作,增加副本的字段,然后丟棄副本。改為更改它以獲取指針:

func (p *PipelineData) addCount(){

這樣可以解決您的問題。


查看完整回答
反對 回復 2021-04-19
  • 1 回答
  • 0 關注
  • 298 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號