たとえば、この回答では:
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.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
は構文の一部ではありません。これは単なるブール値であり、好きな名前を付けることができます。