tnblog
首页
视频
资源
登录

Go Map声明、元素访问与遍历

6042人阅读 2020/12/15 18:03 总访问:3657306 评论:0 收藏:0 手机
分类: Go

go数据类型

Go Map声明、元素访问与遍历

Map的声明

Map的声明相当于其他语言的键值队,通常通过map[key_type]value_type的方式声明。如下举例:

  1. m := map[string]int{"one": 1, "two": 2,"three": 3}
  2. m1 := map[string]int{}
  3. m1["one"] = 1
  4. m2 := make(map[string]int, 10)
  5. //这里的10只能是cap不能是len

我们可以通过下面的代码,对map做基本的了解

  1. package map_test
  2. import "testing"
  3. func TestInitMap(t *testing.T) {
  4. m1 := map[int]int{1: 1, 2: 4, 3: 9}
  5. t.Log(m1[2])
  6. t.Logf("len m1=%d", len(m1))
  7. m2 := map[int]int{}
  8. m2[4] = 16
  9. t.Logf("len m2=%d", len(m2))
  10. m3 := make(map[int]int, 10)
  11. // cap 不支持map键值对
  12. t.Logf("len m3=%d", len(m3))
  13. }

判断非空

从刚刚的代码示例,我们知道了当不赋值时返回的不是nil而是0。当其键中值的本身为0时,我们该如何判断出它赋值还是没有赋值。接下来的案例就会解决这个问题。

  1. func TestAccessNotExistingKey(t *testing.T) {
  2. m1 := map[int]int{}
  3. t.Log(m1[1])
  4. m1[2] = 0
  5. t.Log(m1[2])
  6. // 判断值存在还是空 。(v是值,ok是判断)
  7. if v, ok := m1[3]; ok {
  8. t.Logf("Key 3's value is %d", v)
  9. } else {
  10. t.Logf("Key 3 is not existing.")
  11. }
  12. }

遍历Map

  1. func TestTravelMap(t *testing.T) {
  2. m1 := map[int]int{1: 1, 2: 4, 3: 9}
  3. for k, v := range m1 {
  4. t.Log(k, v)
  5. }
  6. }


欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739

评价

Go Map与工厂模式,在Go语言中实现Set

Go Map与工厂模式,在Go语言中实现Set[TOC] Map与工厂模式 Map 的 value 可以是一个方法与 Go 的 Dock type 接口方式一起...

未找到导入的项目 .wpp.targets。请确认 声明中的路径正确,且磁盘上存在该文件

今天打开vs突然报了一个错..........wpp.targets。请确认 <Import> 声明中的路径正确,且磁盘上存在该文件重新新建一...

新的变量的声明方式 let

ES6 之前的变量声明方式:在 ES5 中写 var 和 不写 var 区别是什么? 使用 var 是在当前的作用域内声明一个变量在函数中...

新的变量声明方式 const

es6 中的 let 声明的是一个变量 可以后期赋值等操作更改数据那么 在 es6 中有没有声明一成不变的变量呢?? => const ...

务管理-声明式事务(XML格式)(TX命名空间管理事务)03

一、续写于:事务管理-编程式事务和AOP改造编程式事务 021、声明tx空间2、重新在配置文件xml配置事务的方法3、aop处的共性...

事务管理-声明式事务(注解)04

一、续写于务管理-声明式事务(XML格式)(TX命名空间管理事务)03,但是不要b、a这两个方法1、配置文件和业务层的变化其实...

事务管理-声明式事务(纯注解)05

1、2、3、配置文件类SpringConfig4、5、6、7、8、

Quartz.NET实例动态改变周期调度。misfireCron

Quartz:Java编写的开源的任务调度作业框架 类似Timer之类定时执行的功能,但是更强大Quartz.NET:是把Quartz转成C# NuGet...

.NET Windows服务发布安装卸载监听脚本。服务调试

一、脚本 为方便不用每次都去写安装卸载的脚本1.安装脚本@echooff @echo开始安装【服务】 %SystemRoot%\Microsoft.NET\Fr...

C ??? 问号和2个问号的用法(类型?对象?)

C# ?C# ???:单问号1.定义数据类型可为空。可用于对int,double,bool等无法直接赋值为null的数据类型进行null的赋值如这...

C outref关键字的用法和区别

说说自己对out、ref的认识,面试问到的几率很高哟。out:classProgram { /* *out、ref都是引用传递,传递后使用都会改变...

cVB.net中全角半角转换方法

///<summary> ///转全角的函数(SBCcase) ///</summary> ///<paramname="input">任意字符串...

redis中主从哨兵和集群这三个有什么区别

主从模式:备份数据、负载均衡,一个Master可以有多个Slaves。sentinel(哨兵)发现master挂了后,就会从slave中重新选举一个...

JS监听inputkeydown,有输入法时打字完成后触发事件

在给输入框绑定input或keydown事件时预期效果是有输入法时,输入中文后触发事件,不希望输一个字母就触发一次事件可以用到c...

下划线换行回车空格ASCII码值与对照表

下划线,ASCII码95换行 , ASCII码10回车 , ASCII码13空格 , ASCII码32ASCII码表:Bin(二进制)Oct(八进制)Dec(十进制)Hex(...
这一世以无限游戏为使命!
排名
2
文章
657
粉丝
44
评论
93
docker中Sware集群与service
尘叶心繁 : 想学呀!我教你呀
一个bug让程序员走上法庭 索赔金额达400亿日元
叼着奶瓶逛酒吧 : 所以说做程序员也要懂点法律知识
.net core 塑形资源
剑轩 : 收藏收藏
映射AutoMapper
剑轩 : 好是好,这个对效率影响大不大哇,效率高不高
ASP.NET Core 服务注册生命周期
剑轩 : http://www.tnblog.net/aojiancc2/article/details/167
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术