たとえば、この回答では:
https://stackoverflow.com/a/10385867/20654
...
if exiterr, ok := err.(*exec.ExitError); ok {
...
それは何とerr.(*exec.ExitError) 呼ばれていますか?それはどのように機能しますか?
たとえば、この回答では:
https://stackoverflow.com/a/10385867/20654
...
if exiterr, ok := err.(*exec.ExitError); ok {
...
それは何とerr.(*exec.ExitError) 呼ばれていますか?それはどのように機能しますか?
型宣言です。仕様よりもうまく説明できません。
型宣言です。そのステートメントは、 も であるifかどうかをチェックしています。それがあったかどうかを教えてください。最後には ですが、 に「変換」されます。これは型でのみ機能します。err*exec.ExitErrorokexiterrerr*exec.ExitErrorinterface
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は構文の一部ではありません。これは単なるブール値であり、好きな名前を付けることができます。