第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

如何在Go中定義集合映射?

如何在Go中定義集合映射?

Go
瀟湘沐 2022-09-12 16:58:35
我想知道如何在Go中定義集合映射。集合是無序唯一元素的集合。這些集合是結(jié)構(磁貼)的集合。映射的鍵是一個字符串。關鍵是瓷磚的組合。X + “,” + 磁貼。到目前為止,我所擁有的。它只適用于一個元素,而不適用于一個集合。type Tile struct {    X int    Y int}func (t Tile) GetKey() {    return strconv.Itoa(t.X) + "," + strconv.Itoa(t.Y)}// This only works for one element, not for a set.type Cache map[string]Tile
查看完整描述

1 回答

?
搖曳的薔薇

TA貢獻1793條經(jīng)驗 獲得超6個贊

如何表示集合

Go 中的集合通常用從給定類型到定義其存在的基元值的映射來表示。類型是語義上表示唯一元素的無序集合的方式。map

var tileSet map[Tile]bool

請注意,您可以使用非指針結(jié)構作為映射鍵。因為:Tile

如果結(jié)構值的所有字段都具有可比性,則這些值是可比較的。如果兩個結(jié)構值對應的非空白字段相等,則兩個結(jié)構值相等。

...顯然這兩個領域是可比的。intXY

這是您使用此類地圖的方式:

tileSet = make(map[Tile]bool, 0)


tile := Tile{X:1,Y:2}

tileSet[tile] = true


// check existence

if exists := tileSet[tile]; exists {

   // ... 

}


// range over set elements

for tile, _ := range tileSet {

   // ...

}

如何表示集合的映射


微不足道的是:


var tileSetMap map[string]map[Tile]bool


為了簡化代碼,您還可以定義自己的集合類型:


type TileSet map[Tile]bool


然后


func main() {

    var tileSetMap map[string]TileSet


    // you initialize it normally with make

    tileSetMap = make(map[string]TileSet, 0)

    tileSetMap["foo"] = make(TileSet, 0)


    tile := Tile{10, 20}

    tileSetMap["foo"][tile] = true

    

    fmt.Println(tileSetMap) // map[foo:map[{10 20}:true]]

}

游樂場: https://play.golang.org/p/ObUo62SI3ih


[1] 規(guī)格:地圖類型


必須為鍵類型的操作數(shù)完全定義比較運算符 == 和 !=


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

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號