- names := []string{"Alicy","Bob","Mike","Rita"}
- //想要取出Mike的名字,我们需要数一数,Mike在第三个位置
- fmt.println(names[2])
有没有一种结构能够帮助我们快速 的取出数据呢?——map结构(字典结构)
Go语言中的字典结构是由键和值构成的,所谓键类似于新华字典的部首或者拼音,可以快速的查询对应的数据。字典的键是不允许重复的,具有唯一性,就像身份证号一样。
map是一种无序的键值对的集合。
map最重要的一点是通过key来快速的检索数据,key类似于索引,指向数据的值。

var m map[int]string //键为int类型,值为string类型
m := map[int]string{} //键的类型为int,值的类型为string
m := make(map[int]string) //键的类型为int,值的类型为string
- //键为int类型,值为string类型
- var m map[int]string = map[int]string{1:"Bob",2:"Mike"}
- //键的类型为int,值的类型为string
- m := map[int]string{1:"Bob",2:"Mike"}
- //键的类型为int,值的类型为string
- m := make(map[int]string)
- m[1] = "Mike"
- m[2] = "Bob"
- m[2] = "Rita" //这种情况下,key如果一致的话,是完成修改,编译不会报错
- package main
-
- import "fmt"
-
- func main() {
- m := map[int]string{1:"Bob",2:"Mike"}
- fmt.Println(m[1])
- }
输出:
Bob
- package main
-
- import "fmt"
-
- func main() {
- m := map[int]string{1:"Bob",2:"Mike"}
- value,ok := m[1]
- if ok{
- fmt.Println(value)
- }else {
- fmt.Println("不存在该value")
- }
- value,ok = m[3]
- if ok{
- fmt.Println(value)
- }else {
- fmt.Println("不存在该value")
- }
- }
输出:
Bob
不存在该value
- package main
-
- import (
- "fmt"
- )
-
- func main() {
- m := map[int]string{1:"Bob",2:"Mike"}
- for key,value := range m{
- fmt.Println(key,":",value)
- }
- }
输出:
1 : Bob
2 : Mike
- package main
-
- import "fmt"
-
- func main() {
- m := map[int]string{1:"Bob",2:"Mike"}
- delete(m,2)
- fmt.Println(m)
- }
输出:
map[1:Bob]
- //定义一个函数将map传参
- func 函数名(map){
- 函数体
- }
-
- //调用
- 函数名(map)
- package main
-
- import "fmt"
-
- func main() {
- m := map[int]string{1:"Bob",2:"Mike"}
- PrintMap(m)
- }
- func PrintMap(m map[int]string) {
- fmt.Println(m)
- }
输出:
map[1:Bob 2:Mike]
在函数中修改或删除map的值,会影响到原map。
- package main
-
- import "fmt"
-
- func main() {
- m := map[int]string{1:"Bob",2:"Mike"}
- PrintMap(m)
- }
- func PrintMap(m map[int]string) {
- m[2] = "我在函数执行时被修改了..."
- fmt.Println(m)
- }
输出:
map[1:Bob 2:我在函数执行时被修改了...]
有一个英文字符串,统计每个字母出现的次数。
- package main
-
- import "fmt"
-
- func main() {
- s := "abcdfgghhwraaaaaaaaaaa"
- m := CountOfAbc(s)
- for key,value := range m{
- fmt.Println(key,":出现",value,"次")
- }
- }
- func CountOfAbc(s string) map[string]int {
- m := map[string]int{}
- for _,value := range s{
- //fmt.Println(string(value))
- m[string(value)] += 1
- }
- return m
- }
输出:
a :出现 12 次
c :出现 1 次
h :出现 2 次
w :出现 1 次
b :出现 1 次
d :出现 1 次
f :出现 1 次
g :出现 2 次
r :出现 1 次