在 Go 中将映射转换为字符串

新手上路,请多包涵

我正在尝试找到将 map[string]string 转换为类型字符串的最佳方法。

我尝试通过 编组 转换为 JSON 以保留格式,然后再转换回字符串,但这并不成功。

更具体地说,我正在尝试将包含键和值的映射转换为字符串以适应 环境变量structs.go

例如,最终的字符串应该是这样的

LOG_LEVEL="x"
API_KEY="y"

地图

m := map[string]string{
        "LOG_LEVEL": "x",
        "API_KEY": "y",
    }

原文由 ecl0 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 772
2 个回答

您需要在代表一个地图条目的每一行上使用一些 key=value 对,并且您需要在值周围加上引号:

 package main

import (
    "bytes"
    "fmt"
)

func createKeyValuePairs(m map[string]string) string {
    b := new(bytes.Buffer)
    for key, value := range m {
        fmt.Fprintf(b, "%s=\"%s\"\n", key, value)
    }
    return b.String()
}

func main() {
    m := map[string]string{
        "LOG_LEVEL": "DEBUG",
        "API_KEY":   "12345678-1234-1234-1234-1234-123456789abc",
    }
    println(createKeyValuePairs(m))

}

这是 Go Playground 上的一个工作示例

原文由 Shaban Naasso 发布,翻译遵循 CC BY-SA 4.0 许可协议

您可以使用 fmt.Sprint 将地图转换为字符串:

 import (
    "fmt"
)

func main() {
    m := map[string]string{
        "a": "b",
        "c": "d",
    }

    log.Println("Map: " + fmt.Sprint(m))
}

或者 fmt.Sprintf

 import (
    "fmt"
)

func main() {
    m := map[string]string{
        "a": "b",
        "c": "d",
    }

    log.Println(fmt.Sprintf("Map: %v", m))
}

原文由 Elviss Strazdins 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题