如何将 Lua 表转换为 Golang 的 map[string]string 格式

以下是 Lua 表的返回值,它类似于数组:

[clientID abcde state 1 activity 8 deviceType 4 seq 1]

enter image description here

我想将其转换为 Golang 的 map[string]string 格式,就像这样:

{
"clientId": "abcde",
"state": "1",
"activity": "8",
"deviceType": "4",
"seq": "1"}

如何做?

原文链接 https://stackoverflow.com/questions/70888196

点赞
stackoverflow用户13888780
stackoverflow用户13888780

这是我认为的一种方法(例子):

func convert() {
    // 定义一个字符串数组
    var arr = []string{"k1", "v1", "k2", "v2", "k3", "v3", "k4", "v4", "k5", "v5", "k6", "v6"}
    // 定义一个空字符串映射
    var res = map[string]string{}
    // 假设数组长度为偶数,则循环次数为数组长度的一半
    for i := 0; i < len(arr)/2; i++ {
        // 取出当前元素及其下一个元素组成一个长度为2的字符串切片
        val := arr[i*2 : i*2+2]
        // 将切片的第一个元素作为键,第二个元素作为值添加到映射中
        res[val[0]] = val[1]
    }
}
2022-01-28 04:04:15
stackoverflow用户7604221
stackoverflow用户7604221

这个代码很好用

func convert(kvs []string) map[string]string{
    if len(kvs)%2 != 0 {
        panic("键值对数量应该是偶数")
    }

    result := make(map[string]string, len(kvs)/2)
    for i := 0; i < len(kvs)-1; i+=2 {
        result[kvs[i]] = kvs[i+1]
    }
    return result
}
2022-01-28 05:28:53