package main

import (
“fmt”
“reflect”
)

func main() {
//定义一个接口类型的切片
in := make([]interface{}, 3)
m1 := make(map[string]string)
m2 := make(map[string][]byte)
//初始化键值对
m1 = map[string]string{
“teleplay1”: “情定大饭店”,
“teleplay2”: “天国的阶梯”,
“teleplay3”: “爱在哈佛”,
“teleplay4”: “我的女孩”,
“teleplay5”: “寻子三万里”,
“teleplay6”: “仙女与骗子”,
“teleplay7”: “青青草”,
“teleplay8”: “综艺 - 情书”,
“teleplay9”: “豪杰春香”,
“teleplay10”: “蓝色生死恋”,
“teleplay11”: “浪漫满屋”,
“teleplay12”: “城市猎人”,
“teleplay13”: “顺风妇产科”,
“teleplay14”: “综合医院”,
“teleplay15”: “白色巨塔”, //每一行必须要有逗号
}
m1[“teleplay16”] = “外科医生奉达熙” //初始化键值对
m2[“song1”] = []byte{‘F’, ‘a’, ‘l’, ‘l’, ‘i’, ‘n’, ‘g’, ’ ', ‘I’, ‘n’, ’ ', ‘L’, ‘o’, ‘v’, ‘e’}
m2[“song2”] = []byte{68, 114, 101, 97, 109, 115, 32, 67, 111, 109, 101, 32, 84, 114, 117, 101}
in[0] = m1
in[1] = m2
fmt.Println(“in[0] =”, in[0])
fmt.Println("\n")
fmt.Println(“in[1] =”, in[1])
fmt.Println("\n")
//初始化键值对
in[2] = map[string]string{
“song3”: “Yesterday Once More”,
}
fmt.Println(in)
// 如何用 in 直接输出m2[“song2”]的值?
fmt.Println("\n", 如何用 in 直接输出m2["song2"]的值?)

fmt.Println("==============================================================================")
fmt.Println("in[1] =", in[1])
fmt.Println("in[1] Type =", reflect.TypeOf(in[1]))
fmt.Println(`in[1].(map[string][]byte) =`, in[1].(map[string][]byte))
fmt.Println(`直接输出m2["song2"]的值 =`, (in[1].(map[string][]byte))["song2"])
fmt.Println(`直接输出m2["song2"]的值 =`, string((in[1].(map[string][]byte))["song2"])) // byte[]转字符串
fmt.Println(`直接输出m2["song2"]的第1个字符 =`, (in[1].(map[string][]byte))["song2"][1])  // 输出114表示字母D
fmt.Println("==============================================================================")
fmt.Println("in[2] =", in[2])
fmt.Println((in[2].(map[string]string))["song3"])

}

控制台打印输出以下信息:

2017/07/01 20:37:22 server.go:73: Using API v1
2017/07/01 20:37:22 debugger.go:97: launching process with args: [/root/code/go/src/contoso.org/book/debug]
API server listening at: 127.0.0.1:2345
2017/07/01 20:37:22 debugger.go:505: continuing
in[0] = map[teleplay2:天国的阶梯 teleplay6:仙女与骗子 teleplay11:浪漫满屋 teleplay12:城市猎人 teleplay15:白色巨塔 teleplay16:外科医生奉达熙 teleplay1:情定大饭店 teleplay4:我的女孩 teleplay7:青青草 teleplay10:蓝色生死恋 teleplay14:综合医院 teleplay3:爱在哈佛 teleplay5:寻子三万里 teleplay8:综艺 - 情书 teleplay9:豪杰春香 teleplay13:顺风妇产科]

in[1] = map[song1:[70 97 108 108 105 110 103 32 73 110 32 76 111 118 101] song2:[68 114 101 97 109 115 32 67 111 109 101 32 84 114 117 101]]

[map[teleplay2:天国的阶梯 teleplay6:仙女与骗子 teleplay11:浪漫满屋 teleplay12:城市猎人 teleplay15:白色巨塔 teleplay16:外科医生奉达熙 teleplay1:情定大饭店 teleplay4:我的女孩 teleplay7:青青草 teleplay10:蓝色生死恋 teleplay14:综合医院 teleplay3:爱在哈佛 teleplay5:寻子三万里 teleplay8:综艺 - 情书 teleplay9:豪杰春香 teleplay13:顺风妇产科] map[song2:[68 114 101 97 109 115 32 67 111 109 101 32 84 114 117 101] song1:[70 97 108 108 105 110 103 32 73 110 32 76 111 118 101]] map[song3:Yesterday Once More]]
如何用 in 直接输出m2[“song2”]的值?

in[1] = map[song1:[70 97 108 108 105 110 103 32 73 110 32 76 111 118 101] song2:[68 114 101 97 109 115 32 67 111 109 101 32 84 114 117 101]]
in[1] Type = map[string][]uint8
in[1].(map[string][]byte) = map[song1:[70 97 108 108 105 110 103 32 73 110 32 76 111 118 101] song2:[68 114 101 97 109 115 32 67 111 109 101 32 84 114 117 101]]
直接输出m2[“song2”]的值 = [68 114 101 97 109 115 32 67 111 109 101 32 84 114 117 101]
直接输出m2[“song2”]的值 = Dreams Come True
直接输出m2[“song2”]的第1个字符 = 114

in[2] = map[song3:Yesterday Once More]
Yesterday Once More

请看如下技巧描述:

Golang 接口切片存储多层嵌套Map对象,如何初始化,又如何直接读取嵌套层的key-value值相关推荐

  1. Java树形转扁平_多层嵌套map对象转扁平化map

    将深度嵌套的map对象转换为扁平化的map对象输出. import org.apache.commons.lang3.StringUtils; import java.util.HashMap; im ...

  2. TypeScript--笔记二(Map对象、联合类型、接口)

    TypeScript Map 对象 创建Map对象及初始化 Map 相关的函数与属性 联合类型 声明式 联合类型 函数参数使用 联合类型 联合类型数组 接口 示例 联合类型和接口 接口和数组 接口继承 ...

  3. javaScript中的map对象

    Map Map 对象保存键值对,并且能够记住键的原始插入顺序.任何值(对象或者原始值) 都可以作为一个键或一个值. 描述 一个Map对象在迭代时会根据对象中元素的插入顺序来进行 - 一个 for-of ...

  4. * 构建一个list集合存储5个学生对象, 过滤年龄小于18的,存入一个新的map集合

    import java.util.ArrayList; import java.util.Map; import java.util.Set; import java.util.stream.Coll ...

  5. 递归实现对多层嵌套的对象数组依照某属性进行排序

    <script>//开发中如果需要对多层嵌套的对象数组依照某个属性进行排序,可以使用递归的方法实现//比如需要对数组里面每一层的importSum属性值进行排序const arr = [{ ...

  6. golang 初始化并赋值_嵌套Golang对象的初始化

    比如有这样一个对象: type ProductConfig struct { Site map[string]string } 对应的初始化可以如下写: 需要注意的几点: 其中的成员变量幅值不用&qu ...

  7. Golang——接口、多态、接口继承与转换、空接口、类型断言

    接口是一种规范与标准,只是规定了要做哪些事情.但是具体怎么做,是实现接口的类去做的,接口只是把所有具有共性的方法定义在一起. 接口存在的意义就是用来定义规范,用来做功能的拓展 接口最大的好处是可以实现 ...

  8. Go开发 之 容器(数组Array、切片slice、映射map、列表list)

    文章目录 0.唠唠叨叨 1.数组-Array 1.1.什么是数组 1.1.1.数组的声明 1.1.2.比较两个数组是否相等 1.1.3.示例 1.1.3.1.通过索引下标访问元素 1.1.3.2.数组 ...

  9. Fastjson 序列化,反序列化Map对象排序问题(字符串转map,map转字符串)

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/qingfeng812/article/details/61194594 背景 记录项目中遇到的 关于 ...

  10. golang struct 切片数组去重

    目录 实例1 实例2 适配多个切片类型 实例1 type Fts_message_table_content_nomal struct {Docid int64 `xorm:"docid&q ...

最新文章

  1. 【Qt】QtCreator中的单例编程(以ActionManager为例)
  2. 同时支持三个mysql+sqlite+pdo的php数据库类_同时支持三个MySQL+SQLite+PDO的PHP数据库类...
  3. leetcode算法题--最长字符串链
  4. 【计算机网络】网络安全 : 运输层安全协议 ( 安全套接字层 SSL | 运输层安全 TSL | SSL 服务 | SSL 安全会话建立流程 )
  5. springboot单例模式注入对象_springboot 请求流程简介
  6. 关于redis的文章
  7. python hadoop streaming_Hadoop Streaming 使用及参数设置
  8. Hibernate关系映射
  9. 商汤研究院-SpringAutoML团队招聘啦~
  10. selenium svg标签定位元素
  11. Mac下显示网页全屏快捷键
  12. ORA-3136错误分析——WARNING Inbound Connection Timed Out
  13. 创业之前,做什么工作有利于创业呢?
  14. python 来实现文件复制操作
  15. The 2020 ICPC Asia Shenyang Regional Programming Contest I题 Rise of Shadows(数论)
  16. 开源超融合私有云神器proxmox VE
  17. 设计Weekday类
  18. PIC32MX 读写flash调试经验
  19. 错失项目汇报机会是一种罪过
  20. threeJS对光有反应的材质

热门文章

  1. Android报错: Caused by: java.lang.ClassCastException: com.github.mikephil.charting.charts.PieChart can
  2. L1-045 宇宙无敌大招呼 (5 分)—团体程序设计天梯赛
  3. Linux开发工具_yum使用
  4. sphinx 全文检索 笔记一
  5. python3 自动识图
  6. Winform打包-NSIS 检测.NetFramework版本(亲测可用)
  7. 什么格式的照片可以是透明的
  8. latex中极限符号$与$$区别
  9. 最大子序列的和算法分析一
  10. Jmeter参数化HTTP request中Send Files With The Request的文件路径和文件名