我在goland IDE中执行了此代码段,但是发现输出顺序与我期望的不同:
package main
import (
"fmt"
"errors"
)
func main() {
println("===========================")
println("---------------------------")
r,_:= div(6,3)
fmt.Println(r)
}
func div(x, y int) (int, error) {
defer println("dispose...")
if y == 0 {
return 0, errors.New("division by zero")
}
return x / y, nil
}
输出:
我无法在https://play.golang.org/p/2T5LOt7FRDn中复制 我的本地环境:Windows 10 + go1.10.3 Windows / amd64 + GoLand 2018.1.4
答案 0 :(得分:8)
首先,请注意println()
写入os.Stderr
。
https://golang.org/pkg/builtin/#println
...并将结果写入标准错误
Jetbrain的IDE似乎以不同的颜色在结尾显示Stderr
行。
这是一个较小的程序,可让您重现相同的行为:
package main
import (
"fmt"
"os"
)
func main() {
fmt.Fprintln(os.Stderr, "to stderr")
fmt.Fprintln(os.Stdout, "to stdout")
}
您将看到输出反转,to stderr
行以红色显示。
您无法在IDE外部重现此内容,因为这样会混淆stderr和stdout输出。