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)
	fmt.Println("\n", `如何用 in 直接输出m2["song2"]的值?`)

	fmt.Println("in[1] =", in[1])
	//ValueOf返回一个新值,初始化存储在接口i的具体值。ValueOf(nil)返回0
	fmt.Println("in[1]Type=",reflect.ValueOf(in[1]))
	//in[0].(map[string]string:实例化对象
	fmt.Println(`直接输出m1["teleplay9"]的值=`,reflect.ValueOf(in[0].(map[string]string)["teleplay9"]))
	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]的第一个字符=`,(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"])

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值