如何在实际映射中转换字符串“ key:value”?

时间:2018-09-27 19:45:24

标签: dictionary go struct

是否可以在实际的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
}

谢谢!

1 个答案:

答案 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",
// }