map 的 crud 操作 | 学习笔记

简介: 快速学习 map 的 crud 操作

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

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


map 的 crud 操作

一.map 的增删改查操作

1.map 增加和更新(修改):

map ["key"] = value //如果 key 还没有,就是增加,如果 key 存在就是修改。(这个说明十分重要)

func main(){

var cities map[string]string

cities = make(map[string]string,10)

cities[ "no1"]=“北京”//如果没有 no1 这个 key 就是增加 cities["no2""]=“上海”//如果没有 no1 这个 key 就是增加 fmt.Printin(cities)

cities["no1"]=“天津”//如果有 no1 这个 key 就是修改 fmt.Println(cities)

}

案例:

package main

import (

"fmt"

)

func main( {

//第二种方式

cities := make(map[string]string)

cities[ "no1"]="北京"

cities[ "no2"]=“天津”

cities[ "no3"] ="上海”

fmt.Println(cities)

}

因为前面没有 no1 2 3,所以这里相当于添加,如果此时在增加 no3,

//第二种方式

cities := make(map[string]string)

cities[ "no1"]="北京"

cities[ "no2"]=“天津”

cities[ "no3"] ="上海”

fmt.Println(cities)

//因为 no3 这个 key 已经存在,因此下面的这句话就是修改,no3 不存在就是增加,

cities[ "no3"]=“上海~"

fmt.Println(cities)

输出发现,修改成功,修改和添加主要是决定 key 是否存在。

2. map 删除

说明:

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

func delete:

func delete(m map[Type]Type1, key Type)

内建函数 delete 按照指定的键将元素从映射中删除。若 m 为 nil 或无此元素, delete 不进行操作。

案例:

//演示删除

delete(cities, "no1")(这里删除no1)

fmt.Println(cities)

如果继续删除不存在的 no4:

//当 delete 指定的 key 不存在时,删除不会操作,也不会报错 delete(cities, "no4")

fmt.Println(cities)

细节说明

(1)如果我们要删除 map 的所有 key ,(有一些编程语言像 clean 可以直接全部删除,但是 go 里面没有这样一个方法,如果想删除只能遍历)没有一个专门的方法一次删除,可以遍历一下 key ,逐个删除(学完遍历就可以用 for 循环的办法删除。)

(2)或者 map = make(...),make 一个新的( 让 map 重新分配一个空间),让原来的成为垃圾,被 gc 回收

案例:

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

//1.遍历所有的 key ,然后逐一删除[遍历]

//2.直接 make 一个新的空间

cities = make(map[string]string)

fmt.Println(cities)

建议用第二种方法。

3. map 查找

案例:

var heroes map[string]string

heroes = make(map[string]string, 10)

heroes["no1"]=“宋江”

heroes["no2"]=“卢俊义”

val, findRes := heroes[ "no1"](首先可以找 map 取它的 key,它返回了两个数据,如果确实有这个值 findres 这个 key,value 就是对应的值)

if findRes {

fmt.Println("找到了val=", val)

}else {

fmt.Println(没有no1这个key")

}

说明:如果 heroes 这个 map 中存在“no1”",那么 findRes 就会返回 true,否则返回 false

案例:

//演示 map 的查找

val, ok := cities["no2"]

if ok {

fmt.Printf("有no1 key值为‰v\n", val)

}else {

fmt.Printf("没有no1 key\n")

}

相关文章
|
3月前
|
存储 SQL 关系型数据库
Mysql学习笔记(二):数据库命令行代码总结
这篇文章是关于MySQL数据库命令行操作的总结,包括登录、退出、查看时间与版本、数据库和数据表的基本操作(如创建、删除、查看)、数据的增删改查等。它还涉及了如何通过SQL语句进行条件查询、模糊查询、范围查询和限制查询,以及如何进行表结构的修改。这些内容对于初学者来说非常实用,是学习MySQL数据库管理的基础。
166 6
|
7月前
|
Python
高阶函数如`map`, `filter`, `reduce`和`functools.partial`在Python中用于函数操作
【6月更文挑战第20天】高阶函数如`map`, `filter`, `reduce`和`functools.partial`在Python中用于函数操作。装饰器如`@timer`接收或返回函数,用于扩展功能,如记录执行时间。`timer`装饰器通过包裹函数并计算执行间隙展示时间消耗,如`my_function(2)`执行耗时2秒。
41 3
|
3月前
|
SQL Ubuntu 关系型数据库
Mysql学习笔记(一):数据库详细介绍以及Navicat简单使用
本文为MySQL学习笔记,介绍了数据库的基本概念,包括行、列、主键等,并解释了C/S和B/S架构以及SQL语言的分类。接着,指导如何在Windows和Ubuntu系统上安装MySQL,并提供了启动、停止和重启服务的命令。文章还涵盖了Navicat的使用,包括安装、登录和新建表格等步骤。最后,介绍了MySQL中的数据类型和字段约束,如主键、外键、非空和唯一等。
89 3
Mysql学习笔记(一):数据库详细介绍以及Navicat简单使用
|
3月前
|
数据可视化 API PHP
学生信息管理系统-可视化-科目管理CRUD代码生成器
学生信息管理系统-可视化-科目管理CRUD代码生成器
54 5
|
4月前
|
前端开发 IDE 数据库连接
ThinkPHP6 模型层的模型属性,表映射关系,以及如何在控制层中使用模型层和模型层中的简单CRUD
本文详细介绍了ThinkPHP6中模型层的使用,包括模型属性设置、表映射关系、以及如何在控制层中使用模型层进行CRUD操作。
ThinkPHP6 模型层的模型属性,表映射关系,以及如何在控制层中使用模型层和模型层中的简单CRUD
|
4月前
|
SQL 关系型数据库 MySQL
php学习笔记-连接操作mysq数据库(基础)-day08
本文介绍了PHP中连接操作MySQL数据库的常用函数,包括连接服务器、设置字符集、关闭连接、选择数据库、结果集释放、获取影响行数以及遍历结果集等操作。通过书籍查询的实例演示了如何使用这些函数进行数据库操作,并提供了一个PHP操纵MySQL数据库的模板。
php学习笔记-连接操作mysq数据库(基础)-day08
|
5月前
|
SQL druid Java
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(下)
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)
72 3
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(下)
|
5月前
|
SQL Java 关系型数据库
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(上)
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)
241 3
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(上)
|
5月前
|
SQL 关系型数据库 MySQL
Java数据库部分(MySQL+JDBC)(一、MySQL超详细学习笔记)(下)
Java数据库部分(MySQL+JDBC)(一、MySQL超详细学习笔记)
48 6
|
5月前
|
存储 关系型数据库 MySQL
Java数据库部分(MySQL+JDBC)(一、MySQL超详细学习笔记)(上)
Java数据库部分(MySQL+JDBC)(一、MySQL超详细学习笔记)
119 4