go开发手册:   https://studygolang.com/pkgdoc

一、什么是map

有资料翻译成地图、映射或字典。但是大多数习惯上翻译成集合。
1、map是Go中的内置类型,它将一个值与一个键关联起来。可以使用相应的键检索值。

  • map是一种无序的键值对(key-value pair)的集合。map通过key来快速检索数据,key类似于索引,指向相应的value值。
  • map是一种集合,所以可以像遍历数组或切片那样去遍历它,不过map是无序的,所以无法决

2、使用map的注意细节:
• map是无序的,每次打印出来的map都会不一样,它不能通过index获取,而必须通过key获取;
• map的长度是不固定的,和slice-样可以扩展。内置的len()函数同样适用于map,返回map拥有的键值对的数量。但是map不能通过cap()函数计算容量(或者说cap()函数的参数不可以是map);
•同_tmap中key必须保证唯_。key的数据类型必须是可参与比较运算的类型,也就是支持==或!=操作的类型。如布尔型、整数型、浮点型、字符串型、数组。对于切片、函数等引用类型则不能作为键的类型;

(Invalid map key type: must not be must not be a function , map or slice)
• map的value可以是任何数据类型。
•和slice—样,map也是一种引用类型;

二、map的使用

1、map的声明

map中key可以是:int、float、bool、string、数组;    一定不可以是:切片、函数、map

package main

import (
"fmt"
) func main() {
//map的声明 一(var 变量名 map[key的类型]value的类型 )
var map1 map[string]string
fmt.Printf("%T,%v,%v \n", map1, map1, map1 == nil) //map[string]string,map[],true
//map声明 二
map2 := make(map[string]string)
fmt.Printf("%T,%v,%v \n", map2, map2, map2 == nil) //map[string]string,map[],false
}

2、map的初始化

package main

import (
"fmt"
) func main() {
//map的声明 一(var 变量名 map[key的类型]value的类型 )
var map1 map[string]string
fmt.Println("map的长度", len(map1))
//在声明的同时初始化数据
var map2 = map[string]string{
"sz": "张三",
"ls": "李四",
}
fmt.Println("map=", map2) //先声明 然后再赋值
map3 := make(map[string]string)
map3["ww"] = "王五"
map3["lb"] = "刘备"
fmt.Println("map=", map3)
}

3、map的CURD

package main

import (
"fmt"
) func main() {
//=========在声明的同时初始化数据
var map2 = map[string]string{
"zs": "张三",
"ls": "李四",
}
//=========map添加数据
map2["lb"] = "刘备" //=========map的遍历
for k, v := range map2 {
fmt.Println("k=", k, " v=", v)
}
//=========根据key检测值是否存在
v, ok := map2["sz"]
fmt.Println("v=", v, " ok=", ok) //v= 张三 ok= true
v1, ok1 := map2["sssss"]
fmt.Println("v=", v1, " ok=", ok1) //v= ok= false
if value, key := map2["lb"]; key {
fmt.Println("元素的值=", value)
}
//=========修改map中key对应的value
map2["zs"] = "zhangshan"
fmt.Println("update=", map2) //=========delete 删除map中的元素
//该函数没有返回值,如果删除不存在的key程序不会报错
fmt.Println("delete befor=", map2)
delete(map2, "lb")
delete(map2, "HHHHHHHHHHHHHH")
fmt.Println("delete after=", map2)
//=========清空map (go语言没有清空的函数,如果要清空,就是直接赋新的map)
map2 = map[string]string{}
//map2 = make(map[string]string)
fmt.Println("clear=", map2) //map是引用类型 }

4、map是引用类型

package main

import (
"fmt"
"container/list"
) func main() {
//初始薪资
salary := map[string]float64 {
"Steven":,
"Josh":,
"Daniel":,
}
fmt.Println("初始薪资",salary) //调薪后
newSalary := salary
newSalary["Daniel"] =
fmt.Println("调薪后:" , newSalary)
fmt.Println("原始薪资salary是否受影响:" , salary) //定期涨薪
changeSalary(salary)
fmt.Println("原始薪资salary是否受影响:" , salary)
} //定期涨薪
func changeSalary(m map[string]float64) {
for k :=range m {
m[k] *= 1.1
}
}

GO基础之Map的更多相关文章

  1. Go语言基础之map

    Go语言基础之map Go语言中提供的映射关系容器为map,其内部使用散列表(hash)实现. map map是一种无序的基于key-value的数据结构,Go语言中的map是引用类型,必须初始化才能 ...

  2. Java基础关于Map(字典)的方法使用

    Java基础关于Map(字典)的方法使用 java中一般用map与hashmap来创建一个key-value对象 使用前提是要导入方法包: import java.util.HashMap: impo ...

  3. GO学习-(11) Go语言基础之map

    Go语言基础之map Go语言中提供的映射关系容器为map,其内部使用散列表(hash)实现. map map是一种无序的基于key-value的数据结构,Go语言中的map是引用类型,必须初始化才能 ...

  4. 【JAVA基础】 MAP 遍历

    public static void main(String[] args) { Map<String, String> map = new HashMap<String, Stri ...

  5. 黑马程序员——JAVA基础之Map集合

    ------- android培训.java培训.期待与您交流! ---------- Map集合: 该集合存储键值对.一对一对往里存.而且要保证键的唯一性. 和Set很像,其实Set底层就是使用了M ...

  6. python基础之map/reduce/filter/sorted

    ---map(fun,iterable) 首先来看一看map()函数,map函数接受两个参数,第一个参数是函数的名称,第二个参数一个可迭代对象.即map(fun,iterable) map函数就是将具 ...

  7. go语言基础之map赋值、遍历、删除 、做函数参数

    1.map赋值 示例: package main //必须有个main包 import "fmt" func main() { m1 := map[int]string{1: &q ...

  8. go语言基础之map介绍和使用

    1.map介绍 Go语言中的map(映射.字典)是一种内置的数据结构,它是一个无序的key—value对的集合,比如以身份证号作为唯一键来标识一个人的信息. 2.map示例 map格式为: map[k ...

  9. java 基础 --Collection(Map)

    Map是不是集合?哈哈哈 java编程思想>的第11章,第216页,正数第13行,中原文:“……其中基本的类型是LIst.Set.Queue和Map.这些对象类型也称为集合类,但由于Java类库 ...

  10. Java基础之Map的遍历

    遍历Map集合,有四种方法:   public static void main(String[] args) { Map<String, String> map = new HashMa ...

随机推荐

  1. ASP.NET4.0中JavaScript脚本调用Web Service 方法

    环境:VS2019  .net 4.0 framework 根据教材使用ScriptManager在JavaScript中调用Web service 时,失败.现将过程和解决方法记录如下: 1.定义W ...

  2. 由于ie浏览器ajax缓存 导致layui table表格重载失败的解决办法

    where: { time:new Date()//增加一个数据接口的额外参数→时间戳 }

  3. alibaba/flutter_boost

    flutterBoost使用笔记 新一代Flutter-Native混合解决方案. FlutterBoost是一个Flutter插件,它可以轻松地为现有原生应用程序提供Flutter混合集成方案.Fl ...

  4. 使用SC命令操作(安装、开启、配置、关闭、删除)Windows下的服务

    目录 一.直接使用cmd命令行操作windows服务 二.使用bat批处理-操作windows服务 一.直接使用cmd命令行操作windows服务 1.安装服务 sc create 服务名 binPa ...

  5. 解决Entity 实体类中加了@Id 注解后仍然出现org.hibernate.AnnotationException: No identifier specified for entity 错误

    启动报错如下图所示: 解决方案: 查看网上的资料,大部分都说在实体类中没有添加加主键的注解@Id,这个是必须的.但是我的实体类中明明已经添加了@Id,为什么还会报这个错误呢? 后来检查了很久,发现是我 ...

  6. weed3-1.hello world

    Weed3 一个微型ORM框架(只有0.1Mb哦) 源码:https://github.com/noear/weed3 源码:https://gitee.com/noear/weed3 05年的时候开 ...

  7. MFC程序出现uafxcwd.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)解决办法

    在同一个地方摔倒两次之后,决定记录下来这个东西. 问题 1>uafxcwd.lib(afxmem.obj) : error LNK2005: "void * __cdecl opera ...

  8. Flask request和response

        Response # -*- coding: utf-8 -*-   from flask import Flask, redirect, render_template, jsonify,  ...

  9. 百度地图API 拖拽或点击地图位置获取坐标

    function setPlace(map,myValue,callback){ function getAddress(){ var pp = local.getResults().getPoi(0 ...

  10. Oracle 11g与12c的审计详解

    最近遇到一些脚本诱发的审计相关BUG,感觉有必要重新梳理一下11g与12c的审计模式,于是根据官网修正了一下以前的一篇笔记这里发出来. 一.审计功能的开启: SQL> show paramete ...