在 Go 中将映射转换为字符串
Converting map to string in Go
我正在尝试找到将 map[string]string
转换为字符串类型的最佳方法。
我尝试使用 marshalling 转换为 JSON 以保留格式,然后再转换回字符串,但这并不成功。
更具体地说,我正在尝试将包含键和值的映射转换为字符串以适应 Environment Variables and structs.go.
例如,最终的字符串应该像
LOG_LEVEL="x"
API_KEY="y"
地图
m := map[string]string{
"LOG_LEVEL": "x",
"API_KEY": "y",
}
您需要在代表一个地图条目的每一行上使用一些键=值对,并且您需要在值周围加上引号:
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))
}
我会这样做非常简单和务实:
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)
}
}
您可以在 The Go Playground 中看到实际效果。
您可以使用 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))
}
jsonString, err := json.Marshal(datas)
fmt.Println(err)
这可行:
// Marshal the map into a JSON string.
mJson, err := json.Marshal(m)
if err != nil {
fmt.Println(err.Error())
return
}
jsonStr := string(mJson)
fmt.Println("The JSON data is: ")
fmt.Println(jsonStr)
我正在尝试找到将 map[string]string
转换为字符串类型的最佳方法。
我尝试使用 marshalling 转换为 JSON 以保留格式,然后再转换回字符串,但这并不成功。
更具体地说,我正在尝试将包含键和值的映射转换为字符串以适应 Environment Variables and structs.go.
例如,最终的字符串应该像
LOG_LEVEL="x"
API_KEY="y"
地图
m := map[string]string{
"LOG_LEVEL": "x",
"API_KEY": "y",
}
您需要在代表一个地图条目的每一行上使用一些键=值对,并且您需要在值周围加上引号:
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))
}
我会这样做非常简单和务实:
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)
}
}
您可以在 The Go Playground 中看到实际效果。
您可以使用 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))
}
jsonString, err := json.Marshal(datas)
fmt.Println(err)
这可行:
// Marshal the map into a JSON string.
mJson, err := json.Marshal(m)
if err != nil {
fmt.Println(err.Error())
return
}
jsonStr := string(mJson)
fmt.Println("The JSON data is: ")
fmt.Println(jsonStr)