Home > Blockchain >  Create string from map[string]interface{}
Create string from map[string]interface{}

Time:10-03

    data := map[string]interface{}{
            "username":       'username1',
            "password":       'password1'
        }

I have a map[string]interface{} data, I want to form a string like below

str = "username='username1', password='password1'"

How can I form string like above i.e. key1='value1', key2='value2'....
I am new to golang

CodePudding user response:

Range over data. Add comma if not first. Write key. Write =. Write value.

data := map[string]interface{}{
    "username": "username1",
    "password": "password1",
}
var sb strings.Builder
for k, v := range data {
    if sb.Len() > 0 {
        sb.WriteString(", ")
    }
    sb.WriteString(k)
    sb.WriteString(`="`)
    sb.WriteString(fmt.Sprint(v))
    sb.WriteString(`"`)
}
s := sb.String()
fmt.Println(s)

CodePudding user response:

Have you tried anything? There's lots of ways to do what you're trying to do. Some more peprformant than others, some easier to write... This would be a quick way to implement what you need:

func PrintStr(m map[string]interface{}) {
    parts := make([]string, 0, len(m))
    for k, v := range m {
        parts = append(parts, fmt.Sprintf("%s=%v", k, v))
    }
    fmt.Printf("%s\n", strings.Join(parts, ";"))
}
  • Related