是否可以在实际的Golang映射中转换包含“ key:value key2:value”的字符串?
示例:
package main
type Test struct{
options map[string]interface{}
}
func main() {
string := "key:value key2:key:value"
var test Test
/// Do something to parse string into test.Options
}
谢谢!
答案 0 :(得分:3)
是的,您绝对可以将字符串解析为指定类型的映射!
看看“字符串”包,特别是strings.SplitN(...)
。考虑以下示例,并考虑如何将它们与迭代结合起来以填充该地图:
str := "key:value key2:key:value"
kvs := strings.SplitN(str, " ", -1)
// []string{
// "key:value",
// "key2:key:value",
// }
kv1 := strings.SplitN(kvs[1], ":", 2)
// []string{
// "key2",
// "key:value",
// }
也就是说,您可以用空格()拆分字符串以获取每个键/值对,然后可以用冒号(
:
)拆分以将每对拆分为各自的部分。最后,您只需要将每对添加到地图即可!
请注意,当您以-1作为最终参数调用strings.SplitN(...)
时,它将把输入字符串拆分为与存在的子字符串一样多的子字符串:
kv1 := strings.SplitN(kvs[1], ":", -1) // Note the -1 here
// []string{
// "key2",
// "key",
// "value",
// }