Converting map to string in golang

吃可爱长大的小学妹 提交于 2019-12-23 05:29:21

问题


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

回答1:


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

}

Working Example: Go Playground




回答2:


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



来源:https://stackoverflow.com/questions/48149969/converting-map-to-string-in-golang

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!