go之map
一、概念
- 简述
1、map 是一种无序的键值对的集合。(类似于python的字典dict)
2、map 的key 与 value 都是有类型的,且定义阶段时就已经统一
- 定义方式
# 方式一
var mapName map[key_type]value_type
mapName = make(map[key_type]value_type)
// 如
//    var user map[string]string
//    user = make(map[string]string)
# 方式二 简短声明
mapName := make(map[key_type]value_type)
// 如
//    student := make(map[string]int)
# 方式三
mapName := map[key_type]value_type{}
// 如
// user := map[string]string{"jmz":"上海"}
二、声明、初始化、make
- map 也是引用类型,需要make 创建内存
package main
import "fmt"
func main(){
	var user map[string]string
	user = make(map[string]string)
	user["jmz"] = "安工大"
	user["jly"] = "上核大"
	fmt.Println(user)
	data := make(map[string]int)
	data["info1"] = 32
	data["info2"] = 23
	fmt.Println(data)
	student := map[string]int{"jmz":23}
	fmt.Println(student)
}
三、map的增删改查
package main
import "fmt"
func main(){
	// 简短声明
	student := map[string]string{}
	// 增
	student["jmz"] = "上海"
	student["qqc"] = "北京"
	student["gka"] = "湖北"
	// 改
	student["jmz"] ="河南"
	// 查
	// 判断键是否存在
	v,ok := student["jms"] // ok == true 则jms 键存在对应的value
	if ok {
		fmt.Println(v)
	}
	// for-range
	for k,v := range student{
		fmt.Printf("key:%s,value:%s \n",k,v)
	}
	//你会发现map的输出 是无序的,因为本来map就无序,想要有序请使用 切片
	// 删
	delete(student,"jmz")  // 不存在的键删除 也不会报错
	// delete(student,"lll")  // 不会报错
	fmt.Println(student)
}
四、map 之函数
- map 用法一
package main
import "fmt"
func main(){
	// 简短声明
	s := "中国是一个美丽的国家,China is a beautiful country"
	info := runeCount(s)
	for k,v := range info{
		fmt.Printf("%s : %d \n",string(k),v)
	}
}
// 字符串,解析每个字符的个数
func runeCount(s string)map[rune]int{
	info := map[rune]int{}
	for _,v := range []rune(s){
		info[v]++
	}
	return info
}
- map 用法二 键值对调
package main
import (
	"fmt"
)
var (
	barVal = map[string]int{"alpha": 34, "bravo": 56, "charlie": 23,
		"delta": 87, "echo": 56, "foxtrot": 12,
		"golf": 34, "hotel": 16, "indio": 87,
		"juliet": 65, "kili": 43, "lima": 98}
)
func main() {
	invMap := make(map[int]string, len(barVal))
	for k, v := range barVal {
		invMap[v] = k
	}
	fmt.Println("inverted:")
	for k, v := range invMap {
		fmt.Printf("Key: %v, Value: %v / ", k, v)
	}
}
如果喜欢看小说,请到183小说网
go之map的更多相关文章
- mapreduce中一个map多个输入路径
		package duogemap; import java.io.IOException; import java.util.ArrayList; import java.util.List; imp ... 
- .NET Core中间件的注册和管道的构建(3) ---- 使用Map/MapWhen扩展方法
		.NET Core中间件的注册和管道的构建(3) ---- 使用Map/MapWhen扩展方法 0x00 为什么需要Map(MapWhen)扩展 如果业务逻辑比较简单的话,一条主管道就够了,确实用不到 ... 
- Java基础Map接口+Collections工具类
		1.Map中我们主要讲两个接口 HashMap 与 LinkedHashMap (1)其中LinkedHashMap是有序的 怎么存怎么取出来 我们讲一下Map的增删改查功能: /* * Ma ... 
- Java基础Map接口+Collections
		1.Map中我们主要讲两个接口 HashMap 与 LinkedHashMap (1)其中LinkedHashMap是有序的 怎么存怎么取出来 我们讲一下Map的增删改查功能: /* * Ma ... 
- 多用多学之Java中的Set,List,Map
		很长时间以来一直代码中用的比较多的数据列表主要是List,而且都是ArrayList,感觉有这个玩意就够了.ArrayList是用于实现动态数组的包装工具类,这样写代码的时候就可以拉进 ... 
- Java版本:识别Json字符串并分隔成Map集合
		前言: 最近又看了点Java的知识,于是想着把CYQ.Data V5迁移到Java版本. 过程发现坑很多,理论上看大部分很相似,实践上代码写起来发现大部分都要重新思考方案. 遇到的C#转Java的一些 ... 
- MapReduce剖析笔记之八: Map输出数据的处理类MapOutputBuffer分析
		在上一节我们分析了Child子进程启动,处理Map.Reduce任务的主要过程,但对于一些细节没有分析,这一节主要对MapOutputBuffer这个关键类进行分析. MapOutputBuffer顾 ... 
- MapReduce剖析笔记之七:Child子进程处理Map和Reduce任务的主要流程
		在上一节我们分析了TaskTracker如何对JobTracker分配过来的任务进行初始化,并创建各类JVM启动所需的信息,最终创建JVM的整个过程,本节我们继续来看,JVM启动后,执行的是Child ... 
- MapReduce剖析笔记之五:Map与Reduce任务分配过程
		在上一节分析了TaskTracker和JobTracker之间通过周期的心跳消息获取任务分配结果的过程.中间留了一个问题,就是任务到底是怎么分配的.任务的分配自然是由JobTracker做出来的,具体 ... 
- MapReduce剖析笔记之三:Job的Map/Reduce Task初始化
		上一节分析了Job由JobClient提交到JobTracker的流程,利用RPC机制,JobTracker接收到Job ID和Job所在HDFS的目录,够早了JobInProgress对象,丢入队列 ... 
随机推荐
- u-boot常用命令
			查看ip地址等信息 print tftp相关 设置ip地址 set ipaddr 192.168.1.5 设置tftp所在电脑ip set serverip 192.168.1.8 最后必须输入sav ... 
- 玩转vim编辑器
			1.vim 编辑器可以自定义配置:包含初始化命令的文件叫vimrc(h vimrc),version ---查看版本号.系统-用户配置文件所在位置. 2. 可视模式: 操作一块区域代码: 按v ... 
- python json结构
			=====================================================json==============================import reques ... 
- 8.3 操作MongoDB数据库
			一项权威调查显示,在大数据时代软件开发人员必备的十项技能中MongoDB数据库名列第二,仅次于HTML5.MongoDB是一个基于分布式文件存储的文档数据库,可以说是非关系型(Not Only SQL ... 
- [加强版] Codeforces 835D Palindromic characteristics (回文自动机、DP)
			题目链接: https://codeforces.com/contest/835/problem/D 题意: 一个回文串是\(1\)-回文的,如果一个回文串的左半部分和右半部分一样且都是\(k\)-回 ... 
- Java基础学习总结(72)——提升 java 代码的运行效率
			前言 代码 优化 ,一个很重要的课题.可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没 ... 
- [转] C# 隐藏方法和重写方法
			1:方法重写:就是在基类中的方法用virtual关键字来标识,然后在继承类中对该类进行重写 (override),这样基类中的方法在子类中已经被重写了,基类中的方法在子类中已经失去了功能 了.当让基类 ... 
- [JLOI2015]战争调度
			[JLOI2015]战争调度 题目 解题报告 考试打了个枚举的暴力,骗了20= = $qsy$大佬的$DP$: 其实就是枚举= =,只不过枚举的比较强= = #include<iostream& ... 
- py文件控制台执行时,报错:引入的模块不存在
			1.描述:该模块在IDE中是可以正确执行的.但是从cmd控制台执行时,报错:该模块引入的其他模块不存在. 2.解决:在该模块的#encoding:utf-8 之后另起一行加如下代码: #encodin ... 
- TOYS POJ 2318 计算几何 叉乘的应用
			Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 15060 Accepted: 7270 Description Calc ... 
