我编写的代码旨在打印出映射中的键和值。
kvs := map[string]string{"a": "apple", "b": "banana"}
for k, v := range kvs {
fmt.Println("%s -> %sn", k, v)
}
我希望输出是:
a -> apple
b -> banana
但输出实际上是:
%s -> %s
a apple
%s -> %s
b banana
看起来您正在尝试使用字符串格式化程序,fmt.Println
不支持这些格式化程序。
根据神学家的说法:
根据格式说明符的 printf 格式
而
使用默认格式的 Println 格式
以下内容将给出您尝试获取的输出:
package main
import "fmt"
func main() {
kvs := map[string]string{
"a": "apple",
"b": "banana",
}
for k, v := range kvs {
fmt.Printf("%s -> %sn", k, v)
}
}
请注意,Go 中的映射没有特定的顺序,因此您可能会在另一个键值对之前获得任意键值对。
您使用了错误的打印功能。
I( 尝试用Printf
替换Println
,它应该可以正常工作。
II(另一种选择是先格式化字符串s := fmt.Sprintf("a %s", "string")
,然后将其打印fmt.Println(s)
。
参考:按示例:字符串格式