_map 切片 | 学习笔记

简介: 快速学习_map 切片

开发者学堂课程【Go 语言核心编程 - 基础语法、数组、切片、Map: _map 切片】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/625/detail/9660


_map 切片

一、map 切片

基本介绍

切片的数据类型如果是 map,则我们称为 slice of map,map 切片,这样使用则 map 个数就可以动态变化了。(这是 map 切片最大的特点)

之前理解的切片的概念:切片可以存放一组数据,也可以是动态的数组,但是 map 也可以对应一个切片就也可以理解成动态的 map。切片的数据类型如果是 map ,[]int ,如果这个数据类型是 map,那他就是 map 切片,当使用的时候 map 的个数就可以动态的变化或增加,就使得更加的灵活,所以这个使用就更加的复杂。

案例演示

要求:使用一个 map 来记录 monster 的信息. name 和 age,(说明要用一个 map记录一个妖怪的名字和年龄)也就是说一个 monster(是妖怪的个数)对应一个 map ,并且妖怪的个数可以动态的增加 =>map 切片

代码演示:

首先新建一个文件夹,叫 map slice,之后新建一个文件 main.go

package main

import (

"fmt"

)

func main() {

//演示 map 切片的使用/*

要求:使用一个 map 来记录 monster 的信息 name 和 age,也就是说一个 monster 对应一个 map,并且妖怪的个数可以动态的增加 =>map 切片

*/

//1.声明一个 map 切片

(报错的原因)Var monsters :=[]map[string]string(首先切片本身需要 make 一下才能使用)

monsters = make([]map[string]string, 2)//准备放入两个妖怪

//2.增加第一个妖怪的信息

if monsters[0]== nil i

monsters[0] = make(map[string]string,2)(这里分配 map 空间)

monsters[0][ "name"] =“牛魔王"

monsters[0]["age"] = “500”(这里 500 是个字符串)

}

fmt.Println(monsters)

}

第一个 map 是牛魔王,第二个 map 再往里面放信息

第二次又往里面放信息:而且切片里面是两个妖怪,而且两个妖怪的信息是放在一个 map 里面的。

//1.声明一个 map 切片

var monsters [ ]map[string]string

monsters = make([]map[string]string, 2)//准备放入两个妖怪

//2.增加第一个妖怪的信息

if monsters[0] == nil {

monsters[0] = make(map[string]string,2)

monsters[0][ "name"] =“牛魔王"

monsters[0]["age"] = "500"

}

if monsters[1]== nil {

monsters[1] = make(map[string]string,2)

monsters[1][ "name"] =“玉兔精”

monsters[["age"] = "400”

}

fmt.Println(monsters)

此时如果加上第三个妖怪,狐狸精,由于之前 make 的空间是两个,所以直接增加要报错。

if monsters[2]== nil {

monsters[2] = make(map[string]string,2)

monsters[2]["name"] =“狐狸精”

monsters[2]["age"]= "300”

}

monsters = make([]map[string]string, 3)这里写 3 就可以运行。

//因为之前的写法越界所以报错。

//这里我们需要使用到切片的 append 函数,可以动态的增加 monster

//1.先定义个 monster 信息

newMonster := map[string]string{

"name" :“新的妖怿~火云邪神,

"age" :” 200”,

}

Monster = append(monsters, newMonster)

fmt.Println(monsters)

}

如果之后要动态增加只要 append 就可以执行。

这里就是通过了 map 切片来动态增加 map 这种数据类型。

//增加

if monsters[1]==nil{

monsters[1]=make(map[string]string)//必须map

monsters[1][""name"]=“狐狸精”

monsters[1]["age"] = "100"

}

//动态增加,再和前而一样方式增加,就会报错,使用 append

monster := map[string]string }

"name" :“玉免精。

"age" : "200",

}

Mothers= append(monsters, monster)

var monsters []map[string]string

monsters = make([]map [string]string, 2)

相关文章
|
6月前
|
存储 C++ 容器
【C++】学习笔记——map和set
【C++】学习笔记——map和set
36 0
|
6月前
|
Go
go切片和map比较
go切片和map比较
|
6月前
|
JSON Go 数据格式
Go 语言基础之指针、复合类型【数组、切片、指针、map、struct】(4)
Go 语言基础之指针、复合类型【数组、切片、指针、map、struct】
|
6月前
|
Java 编译器 Go
Go 语言基础之指针、复合类型【数组、切片、指针、map、struct】(3)
Go 语言基础之指针、复合类型【数组、切片、指针、map、struct】
|
6月前
|
存储 安全 Go
Go 语言基础之指针、复合类型【数组、切片、指针、map、struct】(2)
Go 语言基础之指针、复合类型【数组、切片、指针、map、struct】
|
6月前
|
Java Go 索引
Go 语言基础之指针、复合类型【数组、切片、指针、map、struct】(1)
Go 语言基础之指针、复合类型【数组、切片、指针、map、struct】
|
前端开发
前端学习笔记202306学习笔记第三十八天-手写map2
前端学习笔记202306学习笔记第三十八天-手写map2
124 0
前端学习笔记202306学习笔记第三十八天-手写map2
|
7月前
|
分布式计算 JavaScript 前端开发
Stream学习笔记(二)map与reduce
Stream学习笔记(二)map与reduce
|
7月前
|
存储 JavaScript
【ES6系列第二篇】适用JS初学者的Set对象和Map对象学习笔记
【ES6系列第二篇】适用JS初学者的Set对象和Map对象学习笔记
52 0
|
前端开发
前端学习笔记202305学习笔记第二十八天-什么是对象结构 set map之13
前端学习笔记202305学习笔记第二十八天-什么是对象结构 set map之13
40 0
前端学习笔记202305学习笔记第二十八天-什么是对象结构 set map之13