dousi0144
2018-01-08 12:06
浏览 100

在golang中将地图转换为字符串

I am trying to find the best way to convert

map[string]string to type string . I tried converting to json with marshall to keep the format and then converting back to string but this was not successful. More specifically I am trying to convert a map containing keys and vals to a string to accommodate https://www.nomadproject.io/docs/job-specification/template.html#environment-variables https://github.com/hashicorp/nomad/blob/master/nomad/structs/structs.go#L3647

For example the final string should be like

LOG_LEVEL="x"
API_KEY="y"    

The map

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

图片转代码服务由CSDN问答提供 功能建议

我正在尝试找到转换的最佳方法

map [string] string 键入string。 我尝试使用marshall转换为json以保留格式,然后转换回字符串,但这未成功。 更具体地说,我正在尝试将包含键和值的映射转换为字符串以容纳 https://www.nomadproject.io/docs/job-specification/template.html#environment-variables https://github.com/hashicorp/nomad/blob/master/nomad/structs/structs.go#L3647

例如,最后一个字符串应类似于

  LOG_LEVEL =“ x” 
API_KEY =“ y” 
   
 
 

地图

  m:= map [string] string {
“ LOG_LEVEL”:“ x”,
“ API_KEY”:  “ y”,
} 
   
 
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • dpzzkfb1244 2018-01-08 12:43
    已采纳

    I understand you need some key=value pair on each line representing one map entry.

    P.S. you just updated your question and i see you still need quotes around the values, so here come the quotes

    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\"
    ", 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))
    
    }
    

    Working Example: Go Playground

    已采纳该答案
    打赏 评论
  • dongtaogu8510 2018-01-08 15:50

    I would do this very simple and pragmatic:

    package main
    
    import (
        "fmt"
    )
    
    func main() {
        m := map[string]string{
            "LOG_LEVEL": "x",
            "API_KEY":   "y",
        }
    
        var s string
        for key, val := range m {
            // Convert each key/value pair in m to a string
                s = fmt.Sprintf("%s=\"%s\"", key, val)
            // Do whatever you want to do with the string;
            // in this example I just print out each of them.
            fmt.Println(s)
            }
    }
    

    You can see this in action in The Go Playground

    打赏 评论

相关推荐 更多相似问题