如何在 Go 中实现 PHP 函数 `die()`(或 `exit()`)?

Cas*_*per 4 exit die go

在 PHP 中,die()用于停止运行脚本以防止意外行为。在 Go 中,死一个句柄函数的惯用方法是什么?panic()或者return

Pra*_*hra 5

你应该使用os.Exit.

Exit 导致当前程序以给定的状态代码退出。通常,代码零表示成功,非零表示错误。程序立即终止;延迟函数不会运行。

package main

import (
    "fmt"
    "os"
)


func main() {
    fmt.Println("Start")
    os.Exit(1)
    fmt.Println("End")
}
Run Code Online (Sandbox Code Playgroud)

甚至,您可以使用panic,它也会停止正常执行,但在执行停止时抛出错误。

panic 内置函数停止当前 goroutine 的正常执行。当函数 F 调用 panic 时,F 的正常执行会立即停止。任何被 F 推迟执行的函数都以通常的方式运行,然后 F 返回给它的调用者。对于调用者 G 来说,F 的调用就像调用 panic,终止 G 的执行并运行任何延迟函数。这一直持续到正在执行的 goroutine 中的所有函数都以相反的顺序停止。此时,程序终止并报告错误条件,包括 panic 的参数值。这种终止序列称为恐慌,可以由内置函数恢复控制。

package main

import "fmt"

func main() {
    fmt.Println("Start")
    panic("exit")
    fmt.Println("End")
}
Run Code Online (Sandbox Code Playgroud)