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"])
}
Golang 切片类型的接口存储多层嵌套Map对象,如何初始化,又如何直接读取嵌套层的key-value值
最新推荐文章于 2023-10-09 16:31:30 发布