Golang 接口切片存储多层嵌套Map对象,如何初始化,又如何直接读取嵌套层的key-value值
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值相关推荐
- Java树形转扁平_多层嵌套map对象转扁平化map
将深度嵌套的map对象转换为扁平化的map对象输出. import org.apache.commons.lang3.StringUtils; import java.util.HashMap; im ...
- TypeScript--笔记二(Map对象、联合类型、接口)
TypeScript Map 对象 创建Map对象及初始化 Map 相关的函数与属性 联合类型 声明式 联合类型 函数参数使用 联合类型 联合类型数组 接口 示例 联合类型和接口 接口和数组 接口继承 ...
- javaScript中的map对象
Map Map 对象保存键值对,并且能够记住键的原始插入顺序.任何值(对象或者原始值) 都可以作为一个键或一个值. 描述 一个Map对象在迭代时会根据对象中元素的插入顺序来进行 - 一个 for-of ...
- * 构建一个list集合存储5个学生对象, 过滤年龄小于18的,存入一个新的map集合
import java.util.ArrayList; import java.util.Map; import java.util.Set; import java.util.stream.Coll ...
- 递归实现对多层嵌套的对象数组依照某属性进行排序
<script>//开发中如果需要对多层嵌套的对象数组依照某个属性进行排序,可以使用递归的方法实现//比如需要对数组里面每一层的importSum属性值进行排序const arr = [{ ...
- golang 初始化并赋值_嵌套Golang对象的初始化
比如有这样一个对象: type ProductConfig struct { Site map[string]string } 对应的初始化可以如下写: 需要注意的几点: 其中的成员变量幅值不用&qu ...
- Golang——接口、多态、接口继承与转换、空接口、类型断言
接口是一种规范与标准,只是规定了要做哪些事情.但是具体怎么做,是实现接口的类去做的,接口只是把所有具有共性的方法定义在一起. 接口存在的意义就是用来定义规范,用来做功能的拓展 接口最大的好处是可以实现 ...
- 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.数组 ...
- Fastjson 序列化,反序列化Map对象排序问题(字符串转map,map转字符串)
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/qingfeng812/article/details/61194594 背景 记录项目中遇到的 关于 ...
- golang struct 切片数组去重
目录 实例1 实例2 适配多个切片类型 实例1 type Fts_message_table_content_nomal struct {Docid int64 `xorm:"docid&q ...
最新文章
- 【Qt】QtCreator中的单例编程(以ActionManager为例)
- 同时支持三个mysql+sqlite+pdo的php数据库类_同时支持三个MySQL+SQLite+PDO的PHP数据库类...
- leetcode算法题--最长字符串链
- 【计算机网络】网络安全 : 运输层安全协议 ( 安全套接字层 SSL | 运输层安全 TSL | SSL 服务 | SSL 安全会话建立流程 )
- springboot单例模式注入对象_springboot 请求流程简介
- 关于redis的文章
- python hadoop streaming_Hadoop Streaming 使用及参数设置
- Hibernate关系映射
- 商汤研究院-SpringAutoML团队招聘啦~
- selenium svg标签定位元素
- Mac下显示网页全屏快捷键
- ORA-3136错误分析——WARNING Inbound Connection Timed Out
- 创业之前,做什么工作有利于创业呢?
- python 来实现文件复制操作
- The 2020 ICPC Asia Shenyang Regional Programming Contest I题 Rise of Shadows(数论)
- 开源超融合私有云神器proxmox VE
- 设计Weekday类
- PIC32MX 读写flash调试经验
- 错失项目汇报机会是一种罪过
- threeJS对光有反应的材质
热门文章
- Android报错: Caused by: java.lang.ClassCastException: com.github.mikephil.charting.charts.PieChart can
- L1-045 宇宙无敌大招呼 (5 分)—团体程序设计天梯赛
- Linux开发工具_yum使用
- sphinx 全文检索 笔记一
- python3 自动识图
- Winform打包-NSIS 检测.NetFramework版本(亲测可用)
- 什么格式的照片可以是透明的
- latex中极限符号$与$$区别
- 最大子序列的和算法分析一
- Jmeter参数化HTTP request中Send Files With The Request的文件路径和文件名