面试过程中,面试官写鲁了三行代码,让我给出答案. 我答: 2,1, 但是退出不够优雅. 然后面试官又说你仔细想想,又饶头思索一会儿, 我给出了二种可能. (1)只输出一个退出码0, (2)输出2,1 再输出退出码0. 你知道答案吗?
package main
import (
"fmt"
"os"
)
func main() {
defer fmt.Println(1)
defer fmt.Println(2)
os.Exit(0)
}
正确输出: 只输出退出码0, 不输出2,1
- 因为官方又给出解释
// Exit causes the current program to exit with the given status code.
// Conventionally, code zero indicates success, non-zero an error.
// The program terminates immediately; deferred functions are not run.
译: 退出导致当前程序以给定的状态码退出。
通常,代码0表示成功,非0表示错误。
程序立即终止;未运行延迟的函数