博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
go7---map
阅读量:6155 次
发布时间:2019-06-21

本文共 2345 字,大约阅读时间需要 7 分钟。

package main/*map类似其它语言中的哈希表或者字典,以key-value形式存储数据Key必须是支持==或!=比较运算的类型,不可以是函数、map或slice,这3中类型都不能实现== != 的运算,value的类型是任意的。Map查找比线性搜索快很多,但比使用索引访问数据的类型慢100倍,可以使用slice或者数组的时候不要使用map.Map使用make()创建,支持 := 这种简写方式.make([keyType]valueType, cap),cap表示容量,可省略超出容量时会自动扩容,但尽量提供一个合理的初始值使用len()获取元素个数键值对不存在时自动添加,使用delete()删除某键值对使用 for range 对map和slice进行迭代操作*/import (    "fmt"    "sort")func main() {    var m1 map[int]string    m1 = map[int]string{}    fmt.Println(m1) //map[]    m1 = make(map[int]string)    fmt.Println(m1) //map[]    m2 := make(map[int]string)    fmt.Println(m2) //map[]    m2[1] = "11"       //存入key-value    fmt.Println(m2)    //map[1:11]    fmt.Println(m2[1]) //根据key取值    m2[2] = "22"    delete(m2, 1)   //删除map的哪个key    fmt.Println(m2) //map[2:22]    var m3 map[string]map[string]string    m3 = make(map[string]map[string]string) //初始化最外层的map    m3["1"] = make(map[string]string)       //初始化键为"1"的这个map,    //如果value是map那么每个map都要单独的初始化make,    m3["1"]["3"] = "o"    fmt.Println(m3) //map[1:map[3:o]]    //如何判断某个key的map是否初始化了    a, ok := m3["2"]["2"] //:=用于快速不需要指定类型的初始化,=是用于赋值的,    fmt.Println(a, ok)    //false    if ok {    } //检查是否初始化了    //map的遍历    slicem := make([]map[int]string, 5) //以map为元素的slice    for _, v := range slicem {          //遍历slice,   _, v是slice的索引和值,这里不需要索引就忽略了        v = make(map[int]string, 1) //slice中的map进行初始化        v[222] = "ddeww"        fmt.Println(v) //map[222:ddeww] map[222:ddeww] map[222:ddeww] map[222:ddeww] map[222:ddeww]    }    fmt.Println(slicem) //[map[] map[] map[] map[] map[]],v只是一个拷贝,所以原始的map没有改变    slicem1 := make([]map[int]string, 5) //以map为元素的slice    for i := range slicem {              //i是索引        slicem1[i] = make(map[int]string, 1) //slice中的map进行初始化,直接操作而不是对拷贝做操作        slicem1[i][123] = "ddeww"        fmt.Println(slicem1[i]) //map[222:ddeww] map[222:ddeww] map[222:ddeww] map[222:ddeww] map[222:ddeww]    }    fmt.Println(slicem1) //[map[123:ddeww] map[123:ddeww] map[123:ddeww] map[123:ddeww] map[123:ddeww]]    //map的根据key排序    map3 := map[int]string{
1: "a", 2: "b", 3: "c", 4: "d", 5: "e"} slice3 := make([]int, len(map3)) i := 0 for k, _ := range map3 { //忽略value,for range 跟for each差不多 slice3[i] = k i++ } fmt.Println(slice3) //[5 1 2 3 4] sort.Ints(slice3) //sort排序,因为是对整数排序,所以用Ints fmt.Println(slice3) //[1 2 3 4 5],最后根据key来排序}

 

转载地址:http://anbfa.baihongyu.com/

你可能感兴趣的文章
SpringMVC权限管理
查看>>
spring 整合 redis 配置
查看>>
cacti分组发飞信模块开发
查看>>
浅析LUA中游戏脚本语言之魔兽世界
查看>>
飞翔的秘密
查看>>
Red Hat 安装源包出错 Package xxx.rpm is not signed
查看>>
编译安装mysql-5.6.16.tar.gz
查看>>
活在当下
查看>>
每天进步一点----- MediaPlayer
查看>>
PowerDesigner中CDM和PDM如何定义外键关系
查看>>
跨域-学习笔记
查看>>
the assignment of reading paper
查看>>
android apk 逆向中常用工具一览
查看>>
MyEclipse 报错 Errors running builder 'JavaScript Validator' on project......
查看>>
Skip List——跳表,一个高效的索引技术
查看>>
Yii2单元测试初探
查看>>
五、字典
查看>>
前端js之JavaScript
查看>>
Log4J日志配置详解
查看>>
实验7 BindService模拟通信
查看>>