go - 如果文档中没有,Go 类型 ExitError 在包 os/exec 中如何支持 Sys() 方法?

标签 go error-handling

基于网络上的各种示例和对 this 的回答SO 问题,我试图弄清楚 os/exec 包中的 ExitError 类型如何支持 Sys() 方法甚至如果文档仅提及此类型的 Error() 方法。

我猜测有问题的 Sys() 方法来自 os 包中的 ProcessState 类型,但是 ExitError 直接使用它 (exiterror.Sys()) 而不必使用完整的 (exiterror.ProcessState.Sys())?

这一定是一个基本的围棋问题,但我还没有找到我自己的答案......

最佳答案

cmd.Wait()已经返回 *ExitError 类型的错误.如果你看ExitError的定义,你可以看到它嵌入了 *os.ProcessState :

type ExitError struct {
        *os.ProcessState
        // other fields
}

通过*os.ProcessState ExitError 类型的值可以调用Sys()方法。

注意在 ExitError 的定义中, 没有与 *os.ProcessState 关联的字段名称,这意味着 ExitError 类型的值可以直接调用*os.ProcessState上的任何方法(有点像继承,其中 ExitError 继承 *os.ProcessState 。但这只是给你一个非常基本的想法。阅读文档以获得澄清。)只要没有在 ExitError 上定义的方法。同名。

当然还有更多。你可以阅读它here .

关于go - 如果文档中没有,Go 类型 ExitError 在包 os/exec 中如何支持 Sys() 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38428678/

相关文章:

javascript - GAE channel Api 与套接字

python-3.x - 如何检查Flask中的abort()是否抛出自定义错误消息?

javascript - 我如何使用 requirejs 得到真正的错误?

python - Python : magic squares bruteforce and errors [duplicate]

php - 引用 - 这个错误在 PHP 中意味着什么?

go - 无法像我预期的那样使并发工作

go - 如何获取接口(interface)引用的对象的地址

interface - 基于相同接口(interface)的混合类型列表

go - 当 Go 返回多个值时到底发生了什么

php - Wordpress 插件中的自定义错误处理