iT邦幫忙

2023 iThome 鐵人賽

DAY 9
1
Cloud Native

【하나, 둘, ready, get set, go】系列 第 9

【하나, 둘, ready, get set, go】Day 9 - map

  • 分享至 

  • xImage
  •  

前情提要

我們在前一天介紹了 Go 的 struct 基本用法

今天要來介紹的是 Go 的 key-value pair,map

map 其實就跟其他程式語言,像是 Python 的 dict、Swift 的 Dictionary 一樣

都是 key-value pair,可以透過 Key 找到對應的 Value,以及一個 Key 只對應到一個 Value

下面就來實際操作看看

實際操作

建立 map

在第四天的時候,有提到說 map 的預設值為 nil,所以這邊會使用 make 來進行分配與初始化的動作

func make(t Type, size ...IntegerType) Type
package main

import "fmt"

func main() {
    albumMap := make(map[string]any)
    fmt.Println(albumMap)
}

/* 輸出結果
map[]
*/

新增值到 map 內 (C)

要新增值到 map 內的話,也很簡單,只要透過 <map 名稱>["KEY"] = "VALUE" 就可以新增了

package main

import "fmt"

func main() {
    albumMap := make(map[string]any)
    albumMap["KILL MY DOUBT"] = "ITZY"
    albumMap["I AM"] = "IVE"
    albumMap["INVU"] = "TAEYEON"
    albumMap["Pieces"] = "IU"
    fmt.Println(albumMap)
}

/* 輸出結果
map[I AM:IVE INVU:TAEYEON KILL MY DOUBT:ITZY Pieces:IU]
*/

查詢 map 裡的值 (R)

查詢其實就像是取值一樣,有找到對應的 key-value pair 就會回傳對應的 value,找不到對應的,就回傳 nil

package main

import "fmt"

func main() {
    albumMap := make(map[string]any)
    albumMap["KILL MY DOUBT"] = "ITZY"
    albumMap["I AM"] = "IVE"
    albumMap["INVU"] = "TAEYEON"
    albumMap["Pieces"] = "IU"
    fmt.Println(albumMap["KILL MY DOUBT"])
    fmt.Println(albumMap["LILAC"])
}

/* 輸出結果
ITZY
nil
*/

但查詢時遇到 nil 有時候就很討厭,還可能會導致出錯
所以我們可以透過判斷的方式,來安全的得知是否有值 (13~18 行)

package main

import "fmt"

func main() {
    albumMap := make(map[string]any)
    albumMap["KILL MY DOUBT"] = "ITZY"
    albumMap["I AM"] = "IVE"
    albumMap["INVU"] = "TAEYEON"
    albumMap["Pieces"] = "IU"
    fmt.Println(albumMap["KILL MY DOUBT"])
    
    value, isExist := albumMap["LILAC"]
    if isExist {
        fmt.Println(value)
    } else {
        fmt.Println("LILAC is not exist")
    }
}

/* 輸出結果
ITZY
LILAC is not exist
*/

更新 map 裡的值 (U)

更新其實就是另類的新增,所以直接將原本 pair 對應的 value 做複寫就可以了

11 行輸出的結果在 17 行
13 行輸出的結果在 18 行

package main

import "fmt"

func main() {
    albumMap := make(map[string]any)
    albumMap["KILL MY DOUBT"] = "ITZY"
    albumMap["I AM"] = "IVE"
    albumMap["INVU"] = "TAEYEON"
    albumMap["Pieces"] = "IU"
    fmt.Println(albumMap)
    albumMap["Pieces"] = "Cicada"
    fmt.Println(albumMap)
}

/* 輸出結果
map[I AM:IVE INVU:TAEYEON KILL MY DOUBT:ITZY Pieces:IU]
map[I AM:IVE INVU:TAEYEON KILL MY DOUBT:ITZY Pieces:Cicada]
*/

刪除 map 裡的值 (D)

要刪除 map 裡的 key-value pair 也很簡單,我們可以透過內建的 delete Function 來進行刪除

func delete(m map[Type]Type1, key Type)
package main

import "fmt"

func main() {
    albumMap := make(map[string]any)
    albumMap["KILL MY DOUBT"] = "ITZY"
    albumMap["I AM"] = "IVE"
    albumMap["INVU"] = "TAEYEON"
    albumMap["Pieces"] = "IU"
    fmt.Println(albumMap)
    delete(albumMap, "I AM")
    fmt.Println(albumMap)
}

/* 輸出結果
map[I AM:IVE INVU:TAEYEON KILL MY DOUBT:ITZY Pieces:IU]
map[INVU:TAEYEON KILL MY DOUBT:ITZY Pieces:IU]
*/

總結

今天簡單介紹了 Go 的 map 用法

下一篇會來介紹 pointers 的用法

明天見~


上一篇
【하나, 둘, ready, get set, go】Day 8 - struct
下一篇
【하나, 둘, ready, get set, go】Day 10 - pointers
系列文
【하나, 둘, ready, get set, go】30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言