使用内置的
print(ln)
遇到一些意外的控制台输出顺序。 Go版本是1.21.3.
下一个代码:
package main
import (
"fmt"
)
func main() {
println("a=1")
a := 1
fmt.Println(a)
println("b=2")
b := 2
fmt.Println(b)
a = b
b = a
fmt.Println(a)
fmt.Println(b)
println("ab")
}
在我的本地计算机上有下一个输出:
a=1
b=2
ab
1
2
2
2
考虑到实际的调用顺序,预期输出为:
a=1
1
b=2
2
2
2
ab
满足了我使用在线Go编译器(包括Go Playground)时的期望。
同样重要的是,
print(ln)
输出的顺序(本地也是如此)可能很少变化,但在大多数情况下仍然是错误的。
print
写入stderr,fmt.Print
写入stdout。当您混合 print
和 fmt.Print
函数时,您会观察到两个独立的流。