1.map
- map是一种无序的键值集合
- 通过key快速检索数据,类似于索引,指向数据的值
- 是一种集合,可以迭代,因为是无序的,所以返回结果不是固定的
2.定义Map
func main() {
//1.使用make创建
//make(map[KeyType]ValueType,initialCapacity)
//KeyType 键类型,ValueType 值类型 initialCapacity 初始容量 可选
map1 := make(map[string]int) //创建空的map
map2 := make(map[string]int, 10) //创建容量为10的map
map1["1"]=1
fmt.Println(map1["1"], map2)
// 2.map关键字定义
var m map[string]int
var m1 = map[string]int{
"apple": 1, //key,value
"banana": 2,
"orange": 3,
}
fmt.Println(m)
fmt.Println(m1["apple"])
}
3.Map的使用
func main(){
//创建初始化map
map1 :=make(map[int]string)
//- map[key] = value 。将vaule赋值给对应的map的key
map1[1]="java"
map1[1]="java+" //如果key存在,就会覆盖原有的值,
map1[2]="golang"
map1[3]="pythone"
fmt.Println(map1)
//- 判断key是否存在,value, ok = map[key]
value,key:=map1[1]
if key{
fmt.Println("key存在:",key,"value值是:",value)
}else{
fmt.Println("key不存在")
}
//- 删除map中的元素, delete(map,key)
delete(map1,3)
fmt.Println(map1)
//- 新增 map[key] = value
map1[4]="php"
fmt.Println(map1)
//- 修改 map[key] = value ,如果存在这个key就是修改。
map1[4]="php+"
fmt.Println(map1)
//- 查看map的大小, len(map)
fmt.Println(len(map1))
}
4.遍历Map
func main(){
//创建初始化map
map1:=make(map[int]string)
map1[1]="QQ"
map1[2]="WW"
map1[3]="EE"
map2:=map[string]int{"1":1,"2":2,"3":3}
//for key,value range map{} 遍历map
//因map是无序的,所以每次输出顺序可能不一样
for k, v := range map1 {
fmt.Print(k,v)
}
for k,v :=range map2{
fmt.Print(k,v)
}
}
5.map结合slice使用
func main() {
//创建map保存信息
map1 := make(map[string]string)
map1["name"] = "李一"
map1["sex"] = "男"
map1["age"] = "20"
map2 := map[string]string{
"name": "李二",
"sex": "男",
"age": "34",
}
//创建切片并放入数据
userDatas := make([]map[string]string, 2, 3)
userDatas = append(userDatas, map1)
userDatas = append(userDatas, map2)
//for range 输出信息
for key, value := range userDatas {
fmt.Println("key:", key)
fmt.Println(value["age"])
}
}