为了账号安全,请及时绑定邮箱和手机立即绑定

Go代码中的“ err。(* exec.ExitError)”是什么?

Go代码中的“ err。(* exec.ExitError)”是什么?

Go
千巷猫影 2021-05-07 10:11:34
例如,在此答案中:https://stackoverflow.com/a/10385867/20654...if exiterr, ok := err.(*exec.ExitError); ok {...那是什么err.(*exec.ExitError) 叫什么?它是如何工作的?
查看完整描述

2 回答

?
海绵宝宝撒

TA贡献1809条经验 获得超8个赞

这是类型断言。我不能比规范更好地解释它。


查看完整回答
反对 回复 2021-05-10
?
守候你守候我

TA贡献1802条经验 获得超10个赞

这是一个类型断言。该if语句正在检查是否err也是*exec.ExitError。该ok让你知道它是否是或不是。最后exiterr是err,但已“转换为” *exec.ExitError。这仅适用于interface类型。


ok如果您对基础类型有100000%的把握,也可以省略。但是,如果您忽略了ok,但事实证明您错了,那么您将得到一个panic。


// find out at runtime if this is true by checking second value

exitErr, isExitError := err.(*exec.ExitError)


// will panic if err is not *exec.ExitError

exitErr := err.(*exec.ExitError)

ok顺便说一下,这不是语法的一部分。它只是一个布尔值,您可以随意命名。


查看完整回答
反对 回复 2021-05-10
  • 2 回答
  • 0 关注
  • 517 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信