二维数组

二维数组在声明/定义时有对应四种写法(类似一维数组)

var 数组名 [大小][大小]类型 = [大小][大小]类型{{初值...},{初值...}}

var 数组名 [大小][大小]类型 = [...][大小]类型{{初值...},{初值...}}

var 数组名 = [大小][大小]类型{{初值...},{初值...}}

var 数组名 = [...][大小]类型{{初值...},{初值...}}

用for—range来遍历二维数组

map介绍

map是key-value数据结构,又称字段或者关联数组,类似其他编程语言的集合。

var map 变量名 map[keytype]valuetype

key 可以是什么类型

golang中的map 的key可以是很多种类型,比如:bool、数字、string、指针、channel,还可以是只包含前面几个类型的接口,结构体,数组,通常为int、string

注意:slice、map还有function不可以作为key来用,因为这几个没法用==来判断。

valuetype类型和key基本一样,通常为:数字,string,map,struct

map声明的举例:

var a map [string]string

var a map [string]int

var a map [int]string

var a map [string]map[string]string

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

代码说明:

map在使用前一定要make

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

map的value可以相同

map的key-value是无序的

map的使用方式2

var a = make(map【string】string)

声明的时候就初始化

map的使用方式3

var a map[string]string= map[string]string{

"no5" :"第5" ,

"no6" : "第6" ,

}

a := map[string]string{

"no5" : "第5" ,

"no6" : "第6" ,

}

练习:我们要存放3个学生信息,每个学生有name和sex信息

map的增删改查的操作

map增加和更新:

map["key"]=value //如果key还没有,就是增加,如果key存在就是修改。

map删除:

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

如果希望一次性删除所有的key

方法1:遍历所有的key,逐一删除

方法2: 直接make一个新的空间

map查找:

map遍历:

map的遍历使用for-range的结构遍历

map的长度: fmt.Println(len(a))

map切片

案例: 使用一个map来记录学生的信息name和age,也就是说一个学生对应一个map,并且学生的个数可以动态的增加-》map切片

如图:

上方为运行效果,下面为代码

map排序

(1)go语言中没有一个专门的方法针对map的key进行排序

(2)go中map默认是无序的,注意也不是按照添加的顺序存放的,每次遍历得到的输出顺序可能不一样。

(3)go中map排序,是先将key排序,然后遍历输出。

map使用细节:

1:map是引用类型,遵守引用类型的传递机制,在一个函数接受map后,修改后,会直接修改原map

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

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

android数据存放map_go语言学习笔记(18)-二维数组和map相关推荐

  1. C语言学习笔记 (005) - 二维数组作为函数参数传递剖析

    前言 很多文章不外乎告诉你下面这几种标准的形式,你如果按照它们来用,准没错: //对于一个2行13列int元素的二维数组 //函数f的形参形式 f(int daytab[2][13]) {...}// ...

  2. C语言学习之将一个二维数组的行和列互换,存到另一个二维数组中

    C语言学习之将一个二维数组的行和列互换,存到另一个二维数组中 #include <stdio.h> int main(){int a[2][3]={{1,2,3},{4,5,6}}; // ...

  3. python对二维数组排序_python学习笔记:二维数组排序问题

    首先先说一下题目:有一个文件,文件目录及名称:d:\\test1.txt 文件内容: 0001 Jone 1000.00 0002 Stone 30000.00 0008 Smith 50000.00 ...

  4. Go语言学习笔记(二十)

    Go语言学习笔记(二十) 一.处理JSON 1 JSON简介 2 使用JSON API 3 在Go语言中使用JSON 4 解码JSON 5 映射数据类型 6 处理通过HTTP收到的JSON 7 相关问 ...

  5. python segy格式地震数据读写包segyio学习笔记(二)

    python segy格式地震数据读写包segyio学习笔记(二) 最近大致搞明白了segyio读取叠后和叠前segy数据的方法,以及内部存储结构,以两段代码为例: 叠后数据读取.这是一个从给定时窗内 ...

  6. python做直方图-python OpenCV学习笔记实现二维直方图

    本文介绍了python OpenCV学习笔记实现二维直方图,分享给大家,具体如下: 官方文档 – https://docs.opencv.org/3.4.0/dd/d0d/tutorial_py_2d ...

  7. c语言中二维数组怎么,c语言中什么是二维数组

    c语言中什么是二维数组 二维数组A[m][n],这是一个m行,n列的二维数组.以下是由应届毕业生小编整理关于c语言二维数组的内容,希望对大家有所帮助!更多相关内容请关注应届毕业生考试 网. c语言的二 ...

  8. 遍历二维数组_Java编程基础阶段笔记 day06 二维数组

    二维数组 笔记Notes 二维数组 二维数组声明 二维数组静态初始化与二位初始化 二维数组元素赋值与获取 二维数组遍历 二维数组内存解析 打印杨辉三角 Arrays工具类 数组中常见的异常 二维数组 ...

  9. C语言错误c2063,请教C语言中关于将二维数组复制到一个三维数组的问题

    请教C语言中关于将二维数组复制到一个三维数组的问题 小白正在填写一段代码,是有点类似与俄罗斯方块的一段游戏代码,代码如下 要求在增加参数,变量和函数的情况下完成此代码,只能填写// write app ...

最新文章

  1. EC笔记:第4部分:19、设计class犹如设计type
  2. 【Java Web开发指南】ORM一些基础问题整理
  3. 文巾解题 176. 第二高的薪水
  4. vim的基本使用方法
  5. oracle 去除重复的信息
  6. Elasticsearch系列「」学习路线
  7. 什么是实验室人员比对人员_CNAS实验室认可对人员、设备的要求
  8. python twisted和flask_Python高效开发实战——Django、Tornado、Flask、Twisted(第2版)
  9. Mysql5.7.16安装过程
  10. 使用opensocial接入social game
  11. 设备 esp32_低功耗ESP32手持式袖珍显示屏
  12. 64位Win8企业版出现“Unknown Hard Error”系统警告的一个解决方法
  13. 5G技术是如何改变我们的生活
  14. 解决IIS存储空间不足的问题
  15. 【3D建模】Solidworks 3D建模及PrusaSlicer切片打印学习笔记
  16. tomcat 如何查看tomcat版本及位数——tomcat笔记
  17. 冰岛警方选中IDEMIA为其提供新的出入境系统
  18. Java 编译和反编译
  19. java fx 事件处理_JavaFX - 事件处理( Event Handling)
  20. SAP存储税率税码的相关表

热门文章

  1. HDU 6155 Subsequence Count (DP、线性代数、线段树)
  2. python怎样使用_Python如何合理使用assert(新手必读)
  3. 第五章 初始jQuery
  4. 180326新闻:创客授牌仪式新闻稿
  5. SQLiteHelper
  6. Core Location定位
  7. Android 系统自带 Theme(主题)
  8. Core官方DI解析(2)-ServiceProvider
  9. 【Step1】【SPFA】poj2457-Part Acquisition
  10. 使用bootstrap标签页