I've written code that is intended to print out keys and values in a map.
kvs := map[string]string{"a": "apple", "b": "banana"}
for k, v := range kvs {
fmt.Println("%s -> %s
", k, v)
}
I'm expecting the output to be:
a -> apple
b -> banana
But the output is actually:
%s -> %s
a apple
%s -> %s
b banana
It looks like you are trying to use string formatters, which aren't supported by fmt.Println
.
According to the godocs:
Printf formats according to a format specifier
whereas
Println formats using the default formats
The following will give the output you are trying to get:
package main
import "fmt"
func main() {
kvs := map[string]string{
"a": "apple",
"b": "banana",
}
for k, v := range kvs {
fmt.Printf("%s -> %s
", k, v)
}
}
Note that maps in Go do not have a specific ordering so you may get any arbitrary key-value pair before another.
You are using the wrong printing function.
I) Try to replace Println
with Printf
and it should work fine.
II) Another option is to first format the string s := fmt.Sprintf("a %s", "string")
and then print it fmt.Println(s)
.
reference: Go by Example: String Formatting