Golang 内置 print(ln) 函数的奇怪行为

问题描述 投票:0回答:1

使用内置的

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)
输出的顺序(本地也是如此)可能很少变化,但在大多数情况下仍然是错误的。

go printf
1个回答
2
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.