基于网络上的各种示例和对 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/