面试题: defer和os.exit输出是啥

面试过程中,面试官写鲁了三行代码,让我给出答案. 我答: 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

  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表示错误。
程序立即终止;未运行延迟的函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值