当前位置: 首页 > news >正文

Go语言里的map

类似于python里面的字典

key - value 健值存储的数据结构

map引用类型 保存底层hash桶

map

key --天生去重 可hash对像 值类型

引用类型--不保存具体值,只保存指向底层存储的指针

值类型 -- 保存具体的值

go语言中:切片(slice)、map、channel这些都是引用类型

整型、浮点型、复数、字符串、数组 都是值类型

var name map[key_type]value_type

使用make函数去声明

name :=make(map[key_type]value_type)

package mainimport ("encoding/json""fmt"
)/*
key - value  健值存储的数据结构
map引用类型  保存底层hash桶map
key  --天生去重  可hash对像   值类型引用类型--不保存具体值,只保存指向底层存储的指针
值类型 -- 保存具体的值go语言中:切片(slice)、map、channel这些都是引用类型整型、浮点型、复数、字符串、数组 都是值类型var name map[key_type]value_type使用make函数去声明
name :=make(map[key_type]value_type)
*/func main() {country := make(map[string]string, 100)//赋值country["中国"] = "北京"country["美国"] = "华盛顿"country["日本"] = "东京"fmt.Println(country)fmt.Println(country["中国"])//判断某个key在不在map中value, ok := country["中国"]if ok {fmt.Println("能正常取到值,存在这个key", value, ok)} else {fmt.Println("取不到值", ok)}//可以只用一个变量去接收result := country["中国"]fmt.Println(result)//声明加赋值country2 := map[string]string{"法国":  "巴黎","德国":  "柏林","意大利": "罗马",}country2["西班牙"] = "马德里" //添加新的键值对fmt.Println(country2)//遍历//用一个变量接收,只会遍历keyfor k := range country2 {fmt.Println("key:", k)}//用两个变量接收,遍历key和valuefor k, v := range country2 {fmt.Println("key:", k, "value:", v)}//删除delete(country2, "法国")fmt.Println("删除法国后:", country2)//二维mapUserInfo := map[string]map[string]string{"root": {"passwd": "123456"},}fmt.Println(UserInfo)fmt.Println(UserInfo["root"]["passwd"])//空接口  --  可以代表任何类型对象empty_map := map[string]interface{}{"root": "root123456","age":  18,}fmt.Println(empty_map["age"])fmt.Printf("%T\n", empty_map["age"])    //intfmt.Println(empty_map["age"].(int) + 2) //空接口类型进行转换 才能和其他数据类型进行运算//map和json  的转换user_str, err := json.Marshal(UserInfo)if err != nil {fmt.Println("转换出错:", err)} else {fmt.Println("转换成功")fmt.Printf("转换成功之后的数据类型:%T\n", user_str)fmt.Println(user_str, string(user_str))}//json  -->  mapdata_str1 := `{"a":1,"b":2}`var dataMap map[string]interr = json.Unmarshal([]byte(data_str1), &dataMap)if err != nil {fmt.Println("转换出错:", err)} else {fmt.Println("转换成功")fmt.Printf("转换成功之后的数据类型:%T\n", dataMap)fmt.Println(dataMap)}
}
http://www.dtcms.com/a/287498.html

相关文章:

  • RocketMQ源码级实现原理-NameServer路由机制
  • 解锁C++性能密码:TCMalloc深度剖析
  • 低代码平台ToolJet实战总结
  • Java学习--------消息队列的重复消费、消失与顺序性的深度解析​
  • n8n教程分享,从Github读取.md文档内容
  • Redisson RLocalCachedMap 核心参详解
  • Astro:前端性能革命!从原生 HTML 到 Astro + React 的升级指南
  • Flutter基础(前端教程①⑤-API请求转化为模型列成列表展示实战)
  • 前端面试专栏-工程化:28.团队协作与版本控制(Git)
  • 运用KANO模型分析扫地机器人用户需求
  • LangGraph教程9:LangGraph检查点和Send机制
  • Linux 基础命令:文件和目录操作、文件内容查看、进程管理
  • 【嵌入式电机控制#16】电流环(三):过采样提高采集精度看门狗监测总线电压
  • Nginx 实战 :使用logrotate实现日志轮转与保留策略!
  • 【数据结构】二叉树初阶详解(一):树与二叉树基础 + 堆结构全解析
  • 2025 Data Whale x PyTorch 安装学习笔记(Windows 版)
  • Kotlin方差
  • 403 Forbidden:无权限访问请求的资源如何处理
  • Apache Kafka 学习笔记
  • FreeRTOS—列表和列表项
  • Kafka、RabbitMQ 与 RocketMQ 高可靠消息保障方案对比分析
  • 阿里云服务器 CentOS 7 安装 MySQL 8.4 超详细指南
  • UniApp 优化实践:使用常量统一管理本地存储 Key,提升可维护性
  • 【无标题】重点阅读——如何在信息层面区分和表征卷曲维度,解析黑洞内部的维度区分机制
  • 基于 Google Earth Engine 的 DEM 鞍部自动提取
  • 基于Python的毕业设计选题管理系统设计与实现
  • 【CAN通信】AUTOSAR架构下TC3xx芯片是如何将一帧CAN报文发送出去的
  • NX二次开发常用函数坐标转化UF_MTX4_csys_to_csys和UF_MTX4_vec3_multipl
  • Linux基础命令(第二期)
  • 地图定位与导航