原文:https://blog.csdn.net/boyhandsome7/article/details/79734847

-----------------------------------------------------

package main

import (
"fmt"
)

func main() {
//多维map的声明与实现方法
//方法1 初始化一个空的多维映射
mainMapA := map[string]map[string]string{}
subMapA := map[string]string{"A_Key_1": "A_SubValue_1", "A_Key_2": "A_SubValue_2"}
mainMapA["MapA"] = subMapA
fmt.Println("MultityMapA")
for keyA, valA := range mainMapA {
for subKeyA, subValA := range valA {
fmt.Printf("mapName=%s Key=%s Value=%s\n", keyA, subKeyA, subValA)
}
}

//方法2 使用make声明一个多维映射(等同一般声明)
//var mainMap map[string]map[string]string
mainMapB := make(map[string]map[string]string)
//内部容器必须再次初始化才能使用
subMapB := make(map[string]string)
subMapB["B_Key_1"] = "B_SubValue_1"
subMapB["B_Key_2"] = "B_SubValue_2"
mainMapB["MapB"] = subMapB
fmt.Println("\nMultityMapB")

for keyB, valB := range mainMapB {
for subKeyB, subValB := range valB {
fmt.Printf("mapName=%s Key=%s Value=%s\n", keyB, subKeyB, subValB)
}
}

/* 方法3 使用interface{}初始化一个一维映射
* 关键点:interface{} 可以代表任意类型
* 原理知识点:interface{} 就是一个空接口,所有类型都实现了这个接口,所以它可以代表所有类型
*/
//mainMapC := make(map[string]interface{})
mainMapC := map[string]interface{}{}
subMapC := make(map[string]string)
subMapC["C_Key_1"] = "C_SubValue_1"
subMapC["C_Key_2"] = "C_SubValue_2"
mainMapC["MapC"] = subMapC
fmt.Println("\nMultityMapC")
for keyC, valC := range mainMapC {
//此处必须实例化接口类型,即*.(map[string]string)
//subMap := valC.(map[string]string)
for subKeyC, subValC := range valC.(map[string]string) {
fmt.Printf("mapName=%s Key=%s Value=%s\n", keyC, subKeyC, subValC)
}
}
}
运行结果

[ `go run multMap.go` | done: 612.6779ms ]
MultityMapA
mapName=MapA Key=A_Key_2 Value=A_SubValue_2
mapName=MapA Key=A_Key_1 Value=A_SubValue_1

MultityMapB
mapName=MapB Key=B_Key_1 Value=B_SubValue_1
mapName=MapB Key=B_Key_2 Value=B_SubValue_2

MultityMapC
mapName=MapC Key=C_Key_1 Value=C_SubValue_1
mapName=MapC Key=C_Key_2 Value=C_SubValue_2
---------------------
作者:boyhandsome7
来源:CSDN
原文:https://blog.csdn.net/boyhandsome7/article/details/79734847
版权声明:本文为博主原创文章,转载请附上博文链接!

golang map多层嵌套使用及遍历方法汇总的更多相关文章

  1. ASP.NET提取多层嵌套json数据的方法

    本文实例讲述了ASP.NET利用第三方类库Newtonsoft.Json提取多层嵌套json数据的方法,具体例子如下. 假设需要提取的json字符串如下: {"name":&quo ...

  2. 详解ASP.NET提取多层嵌套json数据的方法

    本篇文章主要介绍了ASP.NET提取多层嵌套json数据的方法,利用第三方类库Newtonsoft.Json提取多层嵌套json数据的方法,有兴趣的可以了解一下. 本文实例讲述了ASP.NET利用第三 ...

  3. fastjson排序 Map多层嵌套转换自动排序问题终极解决方案

    阅读更多 最近项目中用到了fastjson(1.2.15)需要将前端多层嵌套json转换为map,由于map的无序性,想了很多办法,最终找到使用 Map m= JSONArray.parseObjec ...

  4. Map,HashMap五种遍历方法

    假设有数组            HashMap<Integer, String> h=new HashMap<Integer,String>();        h.put( ...

  5. java map常用的4种遍历方法

    public static void main(String[] args) { Map<String, String> map = new HashMap<String, Stri ...

  6. python list遍历方法汇总

    list=['a','b','c','d','e'] #方法1: print('#方法1:') #i值为列表的item,list为列表名,因此i值即为列表元素 for i in list: #list ...

  7. iOS常见遍历方法汇总

    一.for循环 NSArray *iosArray = @[@"L", @"O", @"V", @"E", @" ...

  8. Java中关于 ArrayList 和 Map 的常用遍历方法 (学习笔记,便于以后查询)

    一.学习ArrayList与Map时,关于常用遍历方法的记录如下:  二.附源码如下: package com.study.in.myself; import java.util.ArrayList; ...

  9. 双列集合Map的嵌套遍历

    双列集合Map的嵌套使用,例如HashMap中还有一个HashMap,这样的集合遍历起来稍微有点儿复杂.例如一个集合:HashMap<Integer,HashMap<String,Inte ...

随机推荐

  1. 使用C++11原子量实现自旋锁

    一.自旋锁 自旋锁是一种基础的同步原语,用于保障对共享数据的互斥访问.与互斥锁的相比,在获取锁失败的时候不会使得线程阻塞而是一直自旋尝试获取锁.当线程等待自旋锁的时候,CPU不能做其他事情,而是一直处 ...

  2. CMake速记

    目录 CMake速记 我的demo 外部构建 基础语法 常用指令 环境变量 一些变量 参考文档 title: CMake速记 date: 2019/11/18 19:17:40 toc: true - ...

  3. Qt全局坐标和相对坐标

    QMouseEvent中两类坐标系统,一类是窗口坐标,一类是显示器坐标. QPoint QMouseEvent::pos() 返回相对这个widget(重载了QMouseEvent的widget)的位 ...

  4. [转帖]sys.dm_exec_connections (Transact-SQL)

    sys.dm_exec_connections (Transact-SQL) https://docs.microsoft.com/en-us/sql/relational-databases/sys ...

  5. 从 .NET 到 JavaScript —— 纯前端报表控件 ActiveReportsJS 焕新登场

    报表工具的发展史,最早可以追溯到微软报表SSRS(SQL Server Reporting Services)时期.最初,报表工具主要应用于报表的定制.呈现和输出.经过几十年的发展,随着各种业务系统功 ...

  6. 小菜鸟之SSM框架

    # SSM框架 # **什么是框架** 就是模板,将一些基础性的程序和代码由框架模板提供,然后程序员补充和业务需求相关的代码. # **ssm框架组成** s: springMvc 子框架 代替ser ...

  7. 【Python】**kwargs和takes 1 positional argument but 2 were given

    Python的函数定义中可以在参数里添加**kwargs——简单来说目的是允许添加不定参数名称的参数,并作为字典传递参数.但前提是——你必须提供参数名. 例如下述情况: class C(): def ...

  8. 怎样查看Nginx版本号

    方法一: 使用 nginx -v nginx -v 方法二: 使用 nginx -V nginx -V 注意: nginx -V 显示的是: 版本号 / 编译器版本 / 配置参数

  9. 使用.Net Core 2.2创建windows服务

    使用.Net Core 2.2创建windows服务 我的环境 win 10 home Visual Studio 2019 v16.1.3 安装有.net core 2.2 创建项目 编辑项目文件 ...

  10. B树,B+树的原理及区别

    如图所示,区别有以下两点: 1. B+树中只有叶子节点会带有指向记录的指针(ROWID),而B树则所有节点都带有,在内部节点出现的索引项不会再出现在叶子节点中. 2. B+树中所有叶子节点都是通过指针 ...