close

宣告一個 Map 的規則是:m := map[<Key鑰匙型態>]<Value型態>{}
如以下範例:

    m := map [intint {}
    m := map [stringint {}
    m := map [intstring {}
    m := map [int] *int {}
    ....等等


但是我們也可以在宣告的時候就順便給值:m := map[string]int{<key值>:<value值>, <key值>:<value值>}
如下範例:


    m := map [intint { 0:5, 1:7, 2:62, 3:55, 75}
    m := map [stringint {"AAA":111,"BBB":222,"CCC",333}
    m := map [intstring {0:"XXX", 11:"YYY", 222:"ZZZ"}
    m := map [int] *int {5: *a, 4:*b, 3:*c} // 儲存帶有指針的也可以
    ....等等

剩下就看以下範例吧:

預設不代值:

package main

func main() {

       m := map[string]string{}

       m["127.0.0.1"] = "我的IP"
       m["151.202.5.7"] = "夏娜的IP"
       m["111.222.124.364"] = "瑪莉的IP"

       println(m["127.0.0.1"])
       println(m["151.202.5.7"])
       println(m["111.222.124.364"])
}


輸出結果

  我的IP
  夏娜的IP
  瑪莉的IP

 


 

預設不帶值(迴圈輸出):
 

package main

func main() {

       m := map[string]string{}

       m["127.0.0.1"] = "我的IP"
       m["151.202.5.7"] = "夏娜的IP"
       m["111.222.124.364"] = "瑪莉的IP"

       for k, v := range m {
              println(k,".........", v)
       }
}

 

輸出結果

  111.222.124.364 ......... 瑪莉的IP
  151.202.5.7 ......... 夏娜的IP
  127.0.0.1 ......... 我的IP

 



預設帶值(迴圈輸出):

package main

func main() {

       m := map[string]string{
       "127.0.0.1": "我的IP",
       "151.202.5.7": "夏娜的IP",
       "111.222.124.364": "瑪莉的IP"}

for k, v := range m {
        println(k, ".........", v)
}

 

輸出結果

  111.222.124.364 ......... 瑪莉的IP
  151.202.5.7 ......... 夏娜的IP
  127.0.0.1 ......... 我的IP

 



Map 儲存、使用指針:

package main

func main() {

       i := 0      // i 目前是 0
       k := &i    // k 指向 i

       m := map[string]*int{"k-key": k}     // 儲存指針 k

       *m["k-key"] = 5     // 指針 k = 5

        print(i)     // 如果 k 改變 i 也會跟著改變,輸出結果應當為 5

 }

輸出結果

   5

  



刪除 Map 其中的 Key 鑰匙:

package main

func main() {

       i := map[int]string{-5: "JJJ"}

       i[1] = "AAA"
       i[3] = "BBB"
       i[5] = "CCC"

       println("-----------------刪除前 Map:")
       for k, v := range i {
              println(k, v)
       }

       delete(i, 3) // 刪除 key 鑰匙 3

       println("-----------------刪除後 Map:")
       for k, v := range i {
              println(k, v)
        }
}

 

輸出結果

   

  -----------------刪除前 Map:
  3 BBB
  5 CCC
  1 AAA
  -5 JJJ
  -----------------刪除後 Map:
  1 AAA
  -5 JJJ
  5 CCC

 

 

 

 

 

 

 

 

 

 

 

 

 

 

arrow
arrow
    全站熱搜

    黃彥霖 發表在 痞客邦 留言(0) 人氣()