相同代码goland编辑器和命令行 go run 结果不同

相同代码goland编辑器和命令行 go run 结果不同

代码如下:

package main

import "fmt"

func main() {
    testDefer()
}

func testDefer() {
    defer func() {
        fmt.Println("前")
    }()
    defer func() {
        fmt.Println("中")
    }()
    defer func() {
        fmt.Println("后")
    }()

    panic("系统异常")
}

运行结果
goland

image.png

命令行

image.png

goland 究竟出了什么问题, 开发过程中应该怎么避免此类问题

阅读 3.4k
1 个回答

你好,Golang环境 在子进程执行代码的时候,stdout ,stderr 被匿名管道重定向到父级,对响应顺序不同,触发的打印顺序也不同、 而我们在终端命令行执行, 我们的stdout,stderr 都执行同一个字符通道设备。所以是按顺序的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题