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 次