1.map的基本介绍

  map是key-value数据结构,又称为字段或者关联数组。类似其它编程语言的集合,在编程中是经常使用到的

2.map的声明

  1)基本语法

     var map 变量名 map[keytype] valuetype

注意:声明是不会分配内存的,初始化需要make,分配内存后才能赋值和使用。

func main() {
var a map[string]string
a = make(map[string]string, 10)
a["no1"] = "allin"
a["no2"] = "alex"
a["no1"] = "egon"
a["no3"] = "sdfegon"
fmt.Println(a)
}

对上面代码的说明

  a.map在使用前一定要make

  b.map的key是不能重复,如果重复了,则以最后这个key-value为准

  c.map的value是可以相同的

  d.map的key-value是无序

  e.make内置函数数目

map的三种声明方式:

    var a map[string]string
a = make(map[string]string, 10)
a["no1"] = "allin"
a["no2"] = "alex"
a["no1"] = "egon"
a["no3"] = "sdfegon"
fmt.Println(a) var b map[string]string
b = make(map[string]string, 10)
b["no1"] = "宋江"
b["no2"] = "吴用"
b["no1"] = "武松"
b["no3"] = "吴用"
fmt.Println(b) heros := map[string]string {
"hero1": "宋江",
"hero2": "lujunyi",
"hero3": "吴用",
}
heros["hero4"] = "林冲"
fmt.Println("heros=", heros)

map删除:

  delete(map, "key"),delete是一个内置函数,如果key存在,就删除该key-value,如果key不存在,不操作,但是也不会报错。

如果我们要删除map的所有key,没有一个专门的方法一次删除,可以遍历一下key,逐个删除或者map = kake(...),make一个新的,让原来的成为垃圾,被gc回收。

map查找:

  

val, ok := studentMap["stu02"]["name"]
if ok {
fmt.Println("aaa", val)
} else {
fmt.Println("bbb")
}

说明:如果student这个mapk中存在“nol", 那么返回true, 否则返回false

map遍历:

  

for _, v := range studentMap {
//fmt.Println(k, v)
for k1, v1 := range v {
fmt.Println(k1, v1)
}
}

map切片:

  切片的数据类型如果是map,则我们称为slice of map,map切片,这样使用则map个数就可以动态变化了

map排序:

  golang中没有一个专门的方法针对map的key进行排序

  golang中map的排序,是先将key进行排序,然后根据key值遍历输出即可

    map1 := make(map[int]int, 10)
map1[10] = 100
map1[1] = 13
map1[4] = 56
map1[8] = 90
fmt.Println(map1) var keys []int
for k, _ := range map1 {
keys = append(keys, k)
}
sort.Ints(keys)
for _, k := range keys {
fmt.Printf("map1[%v]=%v \n", k, map1[k])
}

map使用细节:

  1)map费用类型,遵守引用类型传递的机制,在一个函数接收map,修改后,会直接修改原来的map

  2)map的容量达到后,再想map增加元素,会自动扩容,并不会发生panic,也就是说map能动态的增长键值对

  3)map的value也经常使用struct类型,更适合管理复杂的数据

golang之map的使用声明的更多相关文章

  1. Golang中map的三种声明方式和简单实现增删改查

    package main import ( "fmt" ) func main() { test3 := map[string]string{ "one": & ...

  2. 总结golang之map

    总结golang之map 2017年04月13日 23:35:53 趁年轻造起来 阅读数:18637 标签: golangmapgo 更多 个人分类: golang   版权声明:本文为博主原创文章, ...

  3. golang 中 map 转 struct

    golang 中 map 转 struct package main import ( "fmt" "github.com/goinggo/mapstructure&qu ...

  4. golang的map

    map--字典 map的基本使用: package main import "fmt" // 先声明 type PersonInfo struct { id string name ...

  5. Golang:sync.Map

    由于map在gorountine 上不是安全的,所以在大量并发读写的时候,会出现错误. 在1.9版的时候golang推出了sync.Map. sync.Map 通过阅读源码我们发现sync.Map是通 ...

  6. Golang 使用Map构建Set类型的实现方法

    前言 本篇主要给大家讲述了如何利用Go语言的语法特性实现Set类型的数据结构,分享出来供大家参考学习,话不多说了,来一起看看详细的介绍吧. 需求 对于Set类型的数据结构,其实本质上跟List没什么多 ...

  7. golang之map数据类型

    先上代码…… package main import "fmt" func testMap() { //两种声明map方式,切记,必须初始化才能用,否则panic //var a ...

  8. golang 基础 map及工厂函数

    Map是一种数据结构,是一个集合,用于存储一系列无序的键值对.它基于键存储的,键就像一个索引一样,这也是Map强大的地方,可以快速快速检索数据,键指向与该键关联的值. 内部实现 Map是基于 散列表 ...

  9. golang中map原理剖析

    1. golang中的map有自己的一套实现原理,其核心是由hmap和bmap两个结构体实现的 2.  初始化map package main func main() { // 初始化一个可容纳10个 ...

随机推荐

  1. 走进JavaWeb技术世界8:浅析Tomcat9请求处理流程与启动部署过程

    谈谈 Tomcat 请求处理流程 转自:https://github.com/c-rainstorm/blog/blob/tomcat-request-process/reading-notes &l ...

  2. 2018-2019-2 网络对抗技术 20165311 Exp 9 Web安全基础

    2018-2019-2 网络对抗技术 20165311 Exp 9 Web安全基础 基础问题回答 实践过程记录 WebGoat安装 SQL注入攻击 1.命令注入(Command Injection) ...

  3. https://www.atlassian.com/git/tutorials/git-gc

    https://www.atlassian.com/git/tutorials/git-gc The git gc command is a repository maintenance comman ...

  4. Flutter移动电商实战 --(49)详细页_Stack制作底部工具栏

    一直悬浮在最下面的 Stack层叠组件.里面用Row 可以横向布局 开始 stack如果想定位就要用position去定位. 修改return返回值的这个地方 大R刷新查看效果,可以看到固定的在左下角 ...

  5. 有依赖的背包---P1064 金明的预算方案

    P1064 金明的预算方案 solution 1 暴搜 70pt dfs (当前搜到了第几个物品,产生的总价值,剩下多少钱) 剪枝 1:如果剩下的钱数<0,直接return就好,没必要继续了 剪 ...

  6. Win10系统安装VMware-viclient-6.0无响应问题解决方法

    背景:笔记本重做系统升级至Win10系统后,由于工作需要,得安装VMware-viclient-6.0软件进行远程连接. 问题:没有出现网上那种各种报错情况,只是在点击“安装”按钮的时候没弹出任何等待 ...

  7. JDK目录详解

    bin目录: 该目录用于存放一些可执行程序. 如javac.exe(java编译器).java.exe(java运行工具),jar.exe(打包工具)和* javadoc.exe(文档生成工具)等. ...

  8. SpringCloud学习成长之路 五 路由器网关

    在微服务架构中,需要几个基础的服务治理组件,包括服务注册与发现.服务消费.负载均衡.断路器.智能路由.配置管理等,由这几个基础组件相互协作,共同组建了一个简单的微服务系统.一个简答的微服务系统如下图: ...

  9. Ubuntu 16.04 haproxy 简单配置应用

    HAproxy HAProxy是一个使用C语言编写的自由及开放源代码软件,其提供高可用性.负载均衡,以及基于TCP和HTTP的应用程序代理.   测试环境 ubuntu16.04 192.168.20 ...

  10. eclipse 解决POM文件错误:org.apache.maven.archiver.MavenArchiver.getManifest(org.apache.maven.project.MavenProject, org.apache.maven.archiver.MavenArchiveConfiguration)

    解决方案: 更新eclipse中的maven插件 1.1 Help -> Install New Software -> Add 1.2 Location中输入 http://repo1. ...