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

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

如何確定 'map[string][][]int' 是否有值

如何確定 'map[string][][]int' 是否有值

Go
MYYA 2023-05-15 14:39:17
鑒于此代碼:var a map[string][][]intvar aa map[string][][]int = map[string][][]int{"a": [][]int{{10, 10}, {20, 20}}}var bb map[string][][]int = map[string][][]int{"b": [][]int{{30, 30}, {40, 40}}}fmt.Println(aa) // >> map[a:[[10 10] [20 20]] b:[[30 30] [40 40]]]我怎么知道 '[30, 30]' 是否在 'aa' 中?我想檢查“aa”是否有“[30 30]”。
查看完整描述

2 回答

?
一只名叫tom的貓

TA貢獻1906條經驗 獲得超3個贊

您必須遍歷地圖的內容以檢查該地圖中是否包含某個元素。


例如:


target := []int{30, 30}


for _, v := range myMap {

    for _, sub := range v {

        if len(sub) == len(target) && sub[0] == target[0] && sub[1] == target[1] {

            fmt.Println("yeah")

        }

    }

}

使用myMapasaa你將不會得到任何輸出,而使用myMapasbb你將打印出“Yeah”。


如果最里面的切片變長,您也應該將檢查步驟作為一個循環來執行,而不是像那樣硬編碼。


查看完整回答
反對 回復 2023-05-15
?
FFIVE

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

地圖僅按鍵索引。這意味著找到aor既便宜又容易(理想情況下是恒定的時間復雜度) b,但更難找到一個值(線性時間復雜度)。


因此,它是幾個 for 循環:


func find(searchFor [][]int, m map[string][][]int) bool {

  for _, v := range m {

    if sliceEq(v, searchFor) {

      return true

    }

  }


  return false

}


func sliceEq(a, b [][]int) bool {

  if len(a) != len(b) {

    return false

  }


  for i := range a {

    if a[i] != b[i] {

      return false

    }

  }


  return true

}


查看完整回答
反對 回復 2023-05-15
  • 2 回答
  • 0 關注
  • 282 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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