_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)

相关文章
|
2月前
|
存储 JavaScript Java
(Python基础)新时代语言!一起学习Python吧!(四):dict字典和set类型;切片类型、列表生成式;map和reduce迭代器;filter过滤函数、sorted排序函数;lambda函数
dict字典 Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。 我们可以通过声明JS对象一样的方式声明dict
210 1
|
2月前
|
存储 Java Go
【Golang】(3)条件判断与循环?切片和数组的关系?映射表与Map?三组关系傻傻分不清?本文带你了解基本的复杂类型与执行判断语句
在Go中,条件控制语句总共有三种if、switch、select。循环只有for,不过for可以充当while使用。如果想要了解这些知识点,初学者进入文章中来感受吧!
155 1
|
存储 C++ 容器
【C++】学习笔记——map和set
【C++】学习笔记——map和set
143 0
go切片和map比较
go切片和map比较
126 0
|
JSON Go 数据格式
Go 语言基础之指针、复合类型【数组、切片、指针、map、struct】(4)
Go 语言基础之指针、复合类型【数组、切片、指针、map、struct】
|
Java 编译器 Go
Go 语言基础之指针、复合类型【数组、切片、指针、map、struct】(3)
Go 语言基础之指针、复合类型【数组、切片、指针、map、struct】
|
存储 安全 Go
Go 语言基础之指针、复合类型【数组、切片、指针、map、struct】(2)
Go 语言基础之指针、复合类型【数组、切片、指针、map、struct】
|
Java Go 索引
Go 语言基础之指针、复合类型【数组、切片、指针、map、struct】(1)
Go 语言基础之指针、复合类型【数组、切片、指针、map、struct】
|
分布式计算 JavaScript 前端开发
Stream学习笔记(二)map与reduce
Stream学习笔记(二)map与reduce
|
存储 JavaScript
【ES6系列第二篇】适用JS初学者的Set对象和Map对象学习笔记
【ES6系列第二篇】适用JS初学者的Set对象和Map对象学习笔记
210 0

热门文章

最新文章