Go Langの開発はかなり新しいです。最近、私は今、上記のエラーが文字列を返す唯一の方法Error()
を公開するのgetObjectGo LangでのAerospikeライブラリエラーの処理
err = aer.AeroDB.getObject(nil, key, Record)
if err != nil {
fmt.Println(err)
}
にエアロスパイク囲碁クライアントを使用しています。私はそれぞれのタイプのエラーを別々に処理する必要があります。エラーコードが返されないので、これを行うにはどうすればいいですか?関連する型を取得するために文字列マッチングを行いますか?
解決策:下記の回答とコメントは、正確な回答を見つけるのに役立ちました。私はここでそれを他の人と共有します。 Aerospikeライブラリの輸出AerospikeError
構造体。エラーはゼロまたはAerospikeError
struct
になる可能性があります。次のコードで作業が行われました。
import (
"errors"
"fmt"
aerospike "github.com/aerospike/aerospike-client-go"
"github.com/aerospike/aerospike-client-go/types"
)
type ArDB struct {
Host string
Port int
AeroDB *aerospike.Client
}
ArErr, failed := aer.AeroDB.GetObject(nil, key, Record).(types.AerospikeError)
if failed {
if ArErr.ResultCode() == types.KEY_NOT_FOUND_ERROR {
//Key is not present, create new data
Record = NewAudienceRecord()
} else {
//Handle other errors!
}
}
関連/重複の可能性を:私の経験では、以下に示す簡潔な条件付きの型キャストは、独自のものと同じであるとはいえ、より読みやすい[標準のErr変数を持って行きますか。](http://stackoverflow.com/questions/30177860/does-go-have-standard-err-variables); [この回答に投稿された多数のリンク](http://stackoverflow.com/a/32080378/1705598)。 – icza
@iczaので、基本的には、APIプロバイダがエラー処理のために提供する構造体の型に頼らざるを得ません。彼らが(この場合のように)わかりにくいエラーエラーを提供しない場合、私のオプションは何ですか? –