Go语言学习笔记:3 map
一.语法基础
Go语言中 map
的定义语法如下:
map[KeyType]ValueType
1.KeyType:表示键的类型
2.ValueType:表示键对应的值的类型。
map类型的变量默认初始值为nil,需要使用make()函数来分配内存:
make(map[KeyType]ValueType, [cap])
二.基本的使用
声明后添加元素:
func main() {scoreMap := make(map[string]int, 8)scoreMap["A"] = 50scoreMap["B"] = 100var a = scoreMap["A"] //可以给变量赋值fmt.Println(a)fmt.Println(scoreMap)fmt.Println(scoreMap["A"])fmt.Printf("type of a:%T\n", scoreMap)
}
/*结果:50map[A:50 B:100]50type of a:map[string]int
*/
声明时添加元素(这里写到外部):
var deploy = map[string]int{"A": 10,"B": 20,
}func main() {a := deploy["B"]fmt.Println(a)fmt.Println(deploy)
}
三.判断某个键是否存在(查)
基本格式:
value, ok := map[key]
例子:
var deploy = map[string]int{"A": 10,"B": 20,"C": 30,
}func main() {v, ok := deploy["A"]//判断A是否存在if ok {fmt.Println(v)} else {fmt.Println("没有这个键") //10}a := deploy["B"]fmt.Println(a) //20fmt.Println(deploy) //map[A:10 B:20]
}
四.遍历map
var deploy = map[string]int{"A": 10,"B": 20,"C": 20,
}func main() {deploy["D"] = 40for s, i := range deploy {fmt.Println(s, i)}
}
当只想遍历键或者值的时候
只遍历键:
for s:= range deploy {fmt.Println(s)}
只遍历值:
for _, i := range deploy {fmt.Println(i)}
五.删除键值对
基本语法
delete(map, key)
map:表示要删除键值对的mapkey:表示要删除的键值对的键
示例
func main(){scoreMap := make(map[string]int)scoreMap["张三"] = 90scoreMap["小明"] = 100scoreMap["王五"] = 60delete(scoreMap, "小明")//将小明:100从map中删除for k,v := range scoreMap{fmt.Println(k, v)}
}
六.总结
//直接创建初始化一个map
var mapInit = map[string]string {"xiaoli":"湖南", "xiaoliu":"天津"}
//声明一个map类型变量,
//map的key的类型是string,value的类型是string
var mapTemp map[string]string
//使用make函数初始化这个变量,并指定大小(也可以不指定)
mapTemp = make(map[string]string,10)
//存储key ,value
mapTemp["xiaoming"] = "北京"
mapTemp["xiaowang"]= "河北"
//根据key获取value,
//如果key存在,则ok是true,否则是flase
//v1用来接收key对应的value,当ok是false时,v1是nil
v1,ok := mapTemp["xiaoming"]
fmt.Println(ok,v1)
//当key=xiaowang存在时打印value
if v2,ok := mapTemp["xiaowang"]; ok{fmt.Println(v2)
}
//遍历map,打印key和value
for k,v := range mapTemp{fmt.Println(k,v)
}
//删除map中的key
delete(mapTemp,"xiaoming")
//获取map的大小
l := len(mapTemp)
fmt.Println(l)
Go语言学习笔记:3 map相关推荐
- C语言如何加缓冲,C语言学习笔记之输出缓冲
在c语言中经常用到输出函数printf,当我们像往常一样在输出函数中输入我们的想要的输出的东西后加\n换行 验证结果如我们输出的一样 如果我们在后面加入死循环会不会出现这些语句呢 结果卡死了,可还是输 ...
- Go语言学习笔记-数组、切片、map
Go语言学习笔记-数组.切片.map 数组:同一数据类型元素的集合.是值类型,长度固定无法修改 声明格式:var 数组名字 [元素数量] 数据类型 var arr [3] int //声明定义了一个长 ...
- go get 拉取指定版本_go语言学习笔记-基础知识-3
相关文档 go语言学习笔记-目录 1.简介 1.1 什么是GO Go 是一个开源的编程语言,它能让构造简单.可靠且高效的软件变得容易.Go是从2007年末由Robert Griesemer, Rob ...
- C语言学习笔记第五天_项目训练
C语言学习笔记第五天_项目训练 添加自定义的一个函数库文件 <getch.h> 步骤: 1.在windows中把getch.h放入共享文件夹(文件我放在文末,自取) 2.在Ubuntu终端 ...
- 【Go语言 · 学习笔记】
文章目录 Go语言 · 学习笔记 一.Go包管理 1. 什么是Go语言中的包 2. 包的命名 3. main包 4. 导入包 5. 远程包导入 6. 命名导入 7. 包的init函数 二.Go开发工具 ...
- (一)Go语言学习笔记
Go语言学习笔记 1 前言 2 写Go语言需要注意的地方 2.1 Go语言编译执行和直接run的区别 2.2 Go语言的特点 2.3 Linux下配置Go环境变量 2.4 随记 3 go_code 3 ...
- golang-阅读雨痕大神的Go语言学习笔记的心得
golang-阅读雨痕大神的Go语言学习笔记的心得 第一章 概述 1.1 go与java中的局部变量初始化问题 1.2 golang中实现生产者消费者模型,利用管道进行数据通信 第二章 类型 2.1 ...
- Dart 语言学习笔记(Dart语言完全指南)
Dart 语言学习笔记 Part 1:概览 Dart是一门纯OOP语言.所有的类都继承于Object类.null也是对象,变量仅仅存储对象的引用 Dart是强类型语言,即使Dart可以进行类型推断(使 ...
- 梓益C语言学习笔记之链表&动态内存&文件
梓益C语言学习笔记之链表&动态内存&文件 一.定义: 链表是一种物理存储上非连续,通过指针链接次序,实现的一种线性存储结构. 二.特点: 链表由一系列节点(链表中每一个元素称为节点)组 ...
- 6.方法(go语言学习笔记)
6.方法(go语言学习笔记) 目录 定义 匿名字段 方法集 表达式 1. 定义 方法是与对象实例绑定的特殊函数. 方法是面向对象编程的基本概念,用于维护和展示对象的自身状态.对象是内敛的,每个实例对象 ...
最新文章
- Linux_正则表达式
- one or more of the ports are invalid. Open the server editor and correct the invalid ports
- 近世代数--置换群--判断置换的奇偶性
- 浅谈PostgreSQL的索引
- 上元节的灯会(亮)-dfs
- Friendly Group Gym - 102769F 2020(并查集)ccpc秦皇岛分站赛
- 开课吧java_开课吧javaee企业级开发工程师 十期
- C语言数组初始化的问题
- Judge Simple(判断-简单)
- 369寝室(数组、模拟)
- 代码合并工具_合并上千个Excel表格,1秒就能完成
- Hybrid App开发设计与实现
- 两大思维,就可以让你轻松完成任意一个目标
- Error while waiting for device: The emulator process for AVD Pixel_API_30 has terminated.
- 世界编程语言2008年初排行榜
- bat文件语法和技巧_这不是高手专利,一秒新建100个Excel文件
- rabbitmq高并发RPC调用,你Get到了吗?
- JavaScipt设计模式初探-代理模式(一)
- 用Kodi访问Win10共享文件夹
- 从零到壹搭建一个商城架构--性能指标