【问题标题】:golang i use fmt.Println() after println() butgolang 我在 println() 之后使用 fmt.Println() 但是
【发布时间】:2016-03-11 02:28:43
【问题描述】:

这是我的代码(golang)

func main() {
    names := []string{"1", "2", "3"}

    for index, name := range names {
        println(index, name)
    }

    myMap := map[string]string{
        "A": "Apple",
        "B": "Banana",
        "C": "Charlie",
    }

    for key, val := range myMap {
        fmt.Println(key, val)
    }
}

这就是结果

0 1
B Banana
1 2
2 3
C Charlie
A Apple
  1. 为什么名称和 myMap 混合在一起?
  2. 为什么 myMap 的顺序不同?

【问题讨论】:

  • 首先,简单的一个: 2. 地图的顺序不同 就像@Akavall 评论的那样,这在他的链接中进行了解释。它的要点是哈希表。 1.这是一个奇怪的问题,通过 fmt 包的代码,它只是在缓冲区中写入,然后再写入。在控制台中以不同的变体运行您的代码 100 次 runtime.GOMAXPROCS 我无法重现它,它总是打印完整的数组,然后是地图,但是,当我使用 Go 插件在 IntelliJ 上运行它时,您的行为就会发生。您是在使用它还是在控制台上尝试?您可能偶然发现了一个插件错误。
  • 谢谢。我在 intellij 上运行它。
  • @Akavall:这个问题不是完全重复。完全重复:此问题涵盖的内容与之前关于该主题的问题完全相同。

标签: go


【解决方案1】:

func println

func println(args ...Type)

println 内置函数将其参数格式化为 特定于实现的方式并将结果写入标准错误。

func Println

func Println(a ...interface{}) (n int, err error)

fmt.Println 使用其操作数的默认格式和 写入标准输出。

fmt.Println 写入标准输出 (stdout) 和 println 写入标准错误 (stderr),这是两个不同的非同步文件。

Map types

地图是一种类型的无序元素组,称为 元素类型,由一组另一种类型的唯一键索引,称为 密钥类型。

For statements

“for”语句指定重复执行一个块。

地图上的迭代顺序未指定且无法保证 从一个迭代到下一个迭代是相同的。

地图元素是无序的。未指定迭代顺序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-18
    • 1970-01-01
    • 2013-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-07
    相关资源
    最近更新 更多