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

Golang built-in print(ln) function's weird behaviour [duplicate]

提问人:ghostinecatnewyear 提问时间:11/8/2023 更新时间:11/8/2023 访问量:49

问:

使用内置 .Go 版本为 1.21.3。print(ln)

下一个代码:

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)

printf

评论


答:

2赞 Burak Serdar 11/8/2023 #1

print写入 stderr,写入 stdout。当您混合和功能时,您正在观察两个单独的流。fmt.Printprintfmt.Print