我們在前一天介紹了 Go 的 struct 基本用法
今天要來介紹的是 Go 的 key-value pair,map
map 其實就跟其他程式語言,像是 Python 的 dict、Swift 的 Dictionary 一樣
都是 key-value pair,可以透過 Key 找到對應的 Value,以及一個 Key 只對應到一個 Value
下面就來實際操作看看
在第四天的時候,有提到說 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 內的話,也很簡單,只要透過 <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]
*/
查詢其實就像是取值一樣,有找到對應的 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
*/
更新其實就是另類的新增,所以直接將原本 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 裡的 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 的用法
明天見~