文章目錄
- 使用映射
- 聲明和初始化映射
- 添加項
- 訪問項
- 刪除項
- 映射中的循環
使用映射
Go 中的映射是一個哈希表,是鍵值對的集合。 映射中所有的鍵都必須具有相同的類型,它們的值也是如此。 不過,可對鍵和值使用不同的類型。 例如,鍵可以是數字,值可以是字符串。 若要訪問映射中的特定項,可引用該項的鍵。
聲明和初始化映射
package mainimport "fmt"func main() {studentsAge := map[string]int{"john": 32,"bob": 31,}fmt.Println(studentsAge)
}
如果不想使用項來初始化映射,可使用內置函數 make() 在上一部分創建映射。 可使用以下代碼創建空映射:
studentsAge := make(map[string]int)
添加項
package mainimport "fmt"func main() {studentsAge := make(map[string]int)studentsAge["john"] = 32studentsAge["bob"] = 31fmt.Println(studentsAge)
}
訪問項
在 Go 中,映射的下標表示法可生成兩個值。 第一個是項的值。 第二個是指示鍵是否存在的布爾型標志。
package mainimport "fmt"func main() {studentsAge := make(map[string]int)studentsAge["john"] = 32studentsAge["bob"] = 31age, exist := studentsAge["christy"]if exist {fmt.Println("Christy's age is", age)} else {fmt.Println("Christy's age couldn't be found")}
}
輸出
Christy's age couldn't be found
刪除項
若要從映射中刪除項,請使用內置函數 delete()。 下例演示了如何從映射中刪除項:
package mainimport "fmt"func main() {studentsAge := make(map[string]int)studentsAge["john"] = 32studentsAge["bob"] = 31delete(studentsAge, "christy")fmt.Println(studentsAge)
}
輸出
map[bob:31 john:32]
果你嘗試刪除不存在的項,Go 不會執行 panic。
映射中的循環
將鍵保存在 name
變量中,將值保存在 age
變量中。 因此,range
會首先生成項的鍵,然后再生成該項的值。 可使用 _
變量忽略其中任何一個,如下例所示:
package mainimport ("fmt"
)func main() {studentsAge := make(map[string]int)studentsAge["john"] = 32studentsAge["bob"] = 31for _, age := range studentsAge {fmt.Printf("Ages %d\n", age)}
}
因為,range
會首先生成項的鍵,然后再生成該項的值。所以,也可以這樣
package mainimport ("fmt"
)func main() {studentsAge := make(map[string]int)studentsAge["john"] = 32studentsAge["bob"] = 31for name := range studentsAge {fmt.Printf("Names %s\n", name)}
}
輸出
Names john
Names bob