Go 设置流程退出代码的正确方法?
在Go中,设置流程退出代码的正确方法是什么 我试着把主函数改为Go 设置流程退出代码的正确方法?,go,Go,在Go中,设置流程退出代码的正确方法是什么 我试着把主函数改为 func main() int { return -1 } 但这会导致错误func main必须没有参数和返回值 好的,因此存在os.Exit(code int),但是这会立即中止进程,并且不会干净地退出(例如,不会运行延迟) 我还发现panic将退出进程并将状态代码设置为非零,这可能是最好的方法,尽管它会将堆栈跟踪转储到控制台 设置退出代码的正确方法是什么?使操作系统退出上次执行的延迟功能。延迟函数在周围函数返回之前立即
func main() int {
return -1
}
但这会导致错误func main必须没有参数和返回值
好的,因此存在os.Exit(code int)
,但是这会立即中止进程,并且不会干净地退出(例如,不会运行延迟)
我还发现panic
将退出进程并将状态代码设置为非零,这可能是最好的方法,尽管它会将堆栈跟踪转储到控制台
设置退出代码的正确方法是什么?使操作系统退出上次执行的延迟功能。延迟函数在周围函数返回之前立即执行,顺序与延迟的顺序相反。比如说,
package main
import (
"fmt"
"os"
)
func main() {
code := 0
defer func() {
os.Exit(code)
}()
defer func() {
fmt.Println("Another deferred func")
}()
fmt.Println("Hello, 世界")
code = 1
}
输出:
Hello, 世界
Another deferred func
[process exited with non-zero status]
前往游乐场:
“defer”语句调用其执行被延迟到的函数
由于
函数执行了一个return语句,到达
它的函数体,或者因为相应的goroutine是
惊慌失措
DeferStmt=“defer”表达式
表达式必须是函数或方法调用;不可能
括号内。对于,对内置函数的调用受到限制
表达式语句
每次执行“defer”语句时,函数值和
调用的参数按常规计算并重新保存,但
未执行实际函数体。相反,延迟函数是
在周围函数返回之前立即执行,在
相反,他们被推迟了
我也在想同样的事情。也许此线程可以帮助:。但是这对我没有多大帮助。非常好!我甚至都不认为这是可能的。