1 回答

TA貢獻1793條經(jīng)驗 獲得超6個贊
如何表示集合
Go 中的集合通常用從給定類型到定義其存在的基元值的映射來表示。類型是語義上表示唯一元素的無序集合的方式。map
var tileSet map[Tile]bool
請注意,您可以使用非指針結(jié)構作為映射鍵。因為:Tile
映射鍵必須具有可比性(規(guī)格:映射類型)
Tile
,根據(jù)您如何定義它,具有可比性(規(guī)格:比較運算符),特別是:
如果結(jié)構值的所有字段都具有可比性,則這些值是可比較的。如果兩個結(jié)構值對應的非空白字段相等,則兩個結(jié)構值相等。
...顯然這兩個領域是可比的。int
X
Y
這是您使用此類地圖的方式:
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ù)完全定義比較運算符 == 和 !=
- 1 回答
- 0 關注
- 107 瀏覽
添加回答
舉報