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

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

使用鍵作為數組類型進行散列

使用鍵作為數組類型進行散列

Go
慕的地6264312 2021-09-21 22:33:43
如何在 Go for map 中創建一個鍵作為數組。例如在 ruby 中,我可以實現它:quarters = {  [1, 2, 3] => 'First quarter',  [4, 5, 6] => 'Second quarter',  [7, 8 ,9] => 'Third quarter',  [10, 11, 12] => 'Fourh quarter',}quarters[[1, 2, 3]] # => "First quarter"在 Golang 中看起來如何?
查看完整描述

2 回答

?
嚕嚕噠

TA貢獻1784條經驗 獲得超7個贊

Go 中的數組類型(與切片不同)是可比較的,因此它沒有什么神奇之處:您可以像任何其他地圖一樣定義它:map[KeyType]ValueTypewhere KeyTypewill be[3]int和ValueTypewill be string。


該比較操作符==和=必須為鍵類型的操作數被完全定義!; 因此鍵類型不能是函數、映射或切片。


m := map[[3]int]string{}


m[[3]int{1, 2, 3}] = "First quarter"

m[[3]int{4, 5, 6}] = "Second quarter"

m[[3]int{7, 8, 9}] = "Third quarter"

m[[3]int{10, 11, 12}] = "Fourth quarter"


fmt.Println(m)

輸出:


map[[1 2 3]:First quarter [4 5 6]:Second quarter 

    [7 8 9]:Third quarter [10 11 12]:Fourth quarter]

在Go Playground上試一試。


要查詢元素:


fmt.Println(m[[3]int{1, 2, 3}]) // Prints "First quarter"

您還可以一步創建地圖:


m := map[[3]int]string{

    [3]int{1, 2, 3}:    "First quarter",

    [3]int{4, 5, 6}:    "Second quarter",

    [3]int{7, 8, 9}:    "Third quarter",

    [3]int{10, 11, 12}: "Fourth quarter",

}


查看完整回答
反對 回復 2021-09-21
?
千巷貓影

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

需要注意的是,array在 ruby 和arraygo 中是不同的數據結構。Go 數組是不可變的,而 rubyarray是。Goslice是與 ruby 更相似的數據結構array。但是,slices正如 icza 的回答中指出的那樣,您不能在 go 中使用as 鍵。

所以要回答你的問題:

在 Golang 中看起來如何?

這是不可能的,你不能有一個映射dynamic arraysstringsgo的字典。但是,您可以轉換slicesarrays并將它們用作鍵,正如 icza 所解釋的那樣。


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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