Golang内置print(ln)函数的怪异行为[复制]

atmip9wb  于 2023-11-14  发布在  Go
关注(0)|答案(1)|浏览(128)

此问题在此处已有答案

golang i use fmt.Println() after println() but(1个答案)
6天前关闭
使用内置的print(ln).Go版本1.21.3时,控制台输出出现了一些意想不到的顺序。
下一个代码:

  1. package main
  2. import (
  3. "fmt"
  4. )
  5. func main() {
  6. println("a=1")
  7. a := 1
  8. fmt.Println(a)
  9. println("b=2")
  10. b := 2
  11. fmt.Println(b)
  12. a = b
  13. b = a
  14. fmt.Println(a)
  15. fmt.Println(b)
  16. println("ab")
  17. }

字符集
在我的本地机器上有下一个输出:

  1. a=1
  2. b=2
  3. ab
  4. 1
  5. 2
  6. 2
  7. 2


考虑到调用的实际顺序,预期输出为:

  1. a=1
  2. 1
  3. b=2
  4. 2
  5. 2
  6. 2
  7. ab


当我使用在线Go编译器(包括Go Playground)时,它满足了我的期望。
同样重要的是,print(ln)输出的顺序(也是本地的)可能变化非常少,但在大多数情况下仍然是错误的。

cwdobuhd

cwdobuhd1#

print写入stderr,fmt.Print写入stdout。当您混合使用printfmt.Print函数时,您将观察到两个独立的流。

相关问题