hic003cih / Golang

0 stars 0 forks source link

map(映射) #29

Open hic003cih opened 4 years ago

hic003cih commented 4 years ago
package main

import "fmt"

func main() {
    m := make(map[string]int)

    m["Answer"] = 42
    fmt.Println("The value:", m["Answer"])

    m["Answer"] = 48
    fmt.Println("The value:", m["Answer"])

    delete(m, "Answer")
    fmt.Println("The value:", m["Answer"])

    v, ok := m["Answer"]
    fmt.Println("The value:", v, "Present?", ok)
}
  1. 創造一個map m := make(map[string]int) make裡面放一個map map的第一個[]是key值(索引) 後面的一個參數是放值得類型(如果要放數字,就用int)

  2. 插入值或修改值 m["Answer"] = 42 m的Answer元素的值就是42

  3. 取的值 v := m["Answer"] v 的值就是 42

  4. 刪除值 delete(m, "Answer") 第一個放m放的是map元素,後面放key值(索引),去搜尋map中的那個元素

  5. 確認index是否存在 v, ok := m["Answer"] fmt.Println("The value:", v, "Present?", ok)

輸出結果 : The value: 0 Present? false

if causeName, ok := m["cause"]; ok{ // 不存在的 key 为 Zero value fmt.Println(causeName) } else { fmt.Println("key does not exist") }

當 key 不再該 map 中, 則會輸出該元素類型的零值 並且ok輸出為false,如果存在則為true

hic003cih commented 4 years ago

循環取出map中的每一個值 使用range來對每個key值做迴圈 也可以對value做迴圈 但不保證是按照順序,如果要按照順序,要手動對key做排序 for k,v := range m { fmt.Println(k, v) }

使用len 來取得元素的數量

除了slice,map,function 外的內建類型都可以當key Struct類型不包含上面的字段也可以作為key