执行顺序与代码顺序不同
The execute order differ from code order
我在 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
}
输出:
- 为什么输出顺序与代码顺序不同
- 为什么输出颜色不同(白色和红色),我使用 goland IDE by jetbrain
我无法在 https://play.golang.org/p/2T5LOt7FRDn 中重现
我的本地环境:windows 10 + go1.10.3 windows/amd64 + GoLand 2018.1.4
首先,请注意 println()
写入 os.Stderr
。
https://golang.org/pkg/builtin/#println
...and writes the result to standard error
Jetbrain 的 IDEs 似乎会在末尾以不同的颜色向您显示 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 输出将交错。
我在 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
}
输出:
- 为什么输出顺序与代码顺序不同
- 为什么输出颜色不同(白色和红色),我使用 goland IDE by jetbrain
我无法在 https://play.golang.org/p/2T5LOt7FRDn 中重现 我的本地环境:windows 10 + go1.10.3 windows/amd64 + GoLand 2018.1.4
首先,请注意 println()
写入 os.Stderr
。
https://golang.org/pkg/builtin/#println
...and writes the result to standard error
Jetbrain 的 IDEs 似乎会在末尾以不同的颜色向您显示 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 输出将交错。