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

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

映射未更新:映射值是固定大小的數組

映射未更新:映射值是固定大小的數組

Go
楊__羊羊 2022-09-19 15:00:24
我在結構中有一個地圖:type Neighborhood struct {    rebuilt map[uint32][3]uint32 // Facet index vs {neighbor0, neighbor1, neighbor2}}我初始化地圖:    n := &Neighborhood{        rebuilt: make(map[uint32][3]uint32, 9348),    }    // Populate neighbors with default of UINT32_MAX    for i := uint32(0); i < 9348; i++ {        n.rebuilt[i] = [3]uint32{math.MaxUint32, math.MaxUint32, math.MaxUint32}    }稍后需要更新地圖,但這不起作用:                nbrs0 := n.rebuilt[4]                nbrs1 := n.rebuilt[0]                nbrs0[2] = 0                nbrs1[1] = 4地圖實際上并未使用上述賦值語句進行更新。我錯過了什么?
查看完整描述

2 回答

?
明月笑刀無情

TA貢獻1828條經驗 獲得超4個贊

您需要再次將數組分配給映射。

     nbrs0 := n.rebuilt[4]
     nbrs1 := n.rebuilt[0]
     nbrs0[2] = 0
     nbrs1[1] = 4
     n.rebuilt[4] = nrbs0
     n.rebuilt[0] = nrbs1

當您分配給 您時,請制作原始數組的副本。因此,更改不會傳播到 map,您需要使用新數組顯式更新映射。nbrsN


查看完整回答
反對 回復 2022-09-19
?
肥皂起泡泡

TA貢獻1829條經驗 獲得超6個贊

您需要將值重新分配給地圖條目...


package main


import (

    "fmt"

    "math"

)


type Neighborhood struct {

    rebuilt map[uint32][3]uint32 // Facet index vs {neighbor0, neighbor1, neighbor2}

}


func main() {

    n := &Neighborhood{

        rebuilt: make(map[uint32][3]uint32, 9348),

    }

    // Populate neighbors with default of UINT32_MAX

    for i := uint32(0); i < 3; i++ {

        n.rebuilt[i] = [3]uint32{math.MaxUint32, math.MaxUint32, math.MaxUint32}

    }


    v := n.rebuilt[1]

    v[1] = uint32(0)

    fmt.Printf("%v\n", v)

    fmt.Printf("%v\n", n)

    n.rebuilt[1] = v

    fmt.Printf("%v\n", n)


}

https://play.golang.org/p/Hk5PRZlHUYc


查看完整回答
反對 回復 2022-09-19
  • 2 回答
  • 0 關注
  • 103 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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