【问题标题】:fmt.Println prints out format verbs like %sfmt.Println 打印出格式动词,如 %s
【发布时间】:2017-08-13 04:42:33
【问题描述】:

我编写的代码旨在打印地图中的键和值。

kvs := map[string]string{"a": "apple", "b": "banana"}
for k, v := range kvs {
    fmt.Println("%s -> %s\n", k, v)
}

我希望输出是:

a -> apple
b -> banana

但输出实际上是:

%s -> %s
a apple
%s -> %s
b banana

【问题讨论】:

    标签: go


    【解决方案1】:

    您似乎正在尝试使用 fmt.Println 不支持的字符串格式化程序。

    根据godocs

    根据格式说明符打印f格式

    Println 格式使用默认格式

    以下将给出您想要获得的输出:

    package main
    
    import "fmt"
    
    func main() {
        kvs := map[string]string{
            "a": "apple",
            "b": "banana",
        }
        for k, v := range kvs {
            fmt.Printf("%s -> %s\n", k, v)
        }
    }
    

    请注意,Go 中的地图没有特定的顺序,因此您可能会在另一个之前获得任意键值对。

    【讨论】:

      【解决方案2】:

      您使用了错误的打印功能。

      I) 尝试用Printf 替换Println,它应该可以正常工作。

      II) 另一种选择是先格式化字符串s := fmt.Sprintf("a %s", "string"),然后打印fmt.Println(s)

      参考:Go by Example: String Formatting

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-20
        • 1970-01-01
        • 2021-01-17
        • 2012-10-19
        • 1970-01-01
        相关资源
        最近更新 更多