GoでSSHクライアント接続を開始していますが、エラーが返されたときに詳細なエラーデータにアクセスしようとしています。私はこれを使って、net.DNSError内Name
フィールドの内容を印刷しようとしていますGo 'net'パッケージから 'OpError'構造体に埋め込まれた 'DNSError'構造体のフィールドにアクセスできますか?
&net.DNSError{Err:"no such host", Name:"unknownserver", Server:"", IsTimeout:false, IsTemporary:false}
2016/06/23 11:59:00 Failed to dial: dial tcp: lookup unknownserver: no such host
:これらのエラーデータの2行を返す
client, err := ssh.Dial("tcp", "unknownserver:22", config)
if err != nil {
if oerr, ok := err.(*net.OpError); ok {
a := oerr.Err
fmt.Printf("%#v\n", a)
}
log.Fatal("Failed to dial: " + err.Error())
}
:
私は現在、このコードを使用しています:
fmt.Println(a.Name)
ただし、私はこのエラーを取得するコードmpile:oerr
はタイプnet.OpErrorとoerr.Err
の構造体である場合net.DNSErrorタイプの構造体であるとフィールド{Err:"no such host", Name:"unknownserver", Server:"", IsTimeout:false, IsTemporary:false}
を持って
a.Name undefined (type error has no field or method Name)
を、それが構造体のフィールドにアクセスすることは可能でしょうか?あるいは私はここで重要な概念を誤解していますか?
おかげで、
ありがとうございました! 2番目のタイプのアサーションについてのあなたの説明は、 'error'インターフェースに関してまだ成功しなかったドキュメントとソースのさまざまな情報を明確にしました。しかし、今この側面が明確になり、私はあなたの例のおかげで、望ましいデータを抽出することができました。 –