go-sqlmock
パッケージを使用して、パラメータの 1 つが次のような SQL クエリをテストしようとしています。 gosnowflake .array
(本質的にはスライスのラッパー)。通常、このようなことを行うには、値コンバータを作成する必要があります。これを含めました:
この関数は、クエリに送信されたパラメータごとに呼び出されます。これを使用して、スライス内の値が正しいかどうかをテストし、そうでない場合はパラメーターを渡します。私が抱えている問題は、arrayconverteroption[string]
を作成し、それに gosnowflake.array(["a", "b", "c"])
を与えることです。パラメータを指定すると、 gosnowflake.array
が *[]string
として定義されている内部動的型 *stringarray
を返すため、型アサーションは失敗します。
ここで私のジレンマがわかります。一方では、v
は interface{}
であるため変換できず、内部型が ではないため
v のエイリアスもできません。 *[]string
、ただし *stringarray
。それで、ここで何をすればいいでしょうか?
リフレクションを発生させずにこれを行う方法が見つかりませんでした。しかし、よく考えてみると、私はこうしました:
リーリーつまり、このコードは、動的タイプであるスライスへのポインターを特にチェックします。次に、リフレクションを使用して、内部オブジェクトを期待するスライス タイプに変換します。その後、結果に対して interface()
を呼び出して反映された値から interface{}
を取得し、それを []t
に変換します。それでおしまい。そうでない場合は、これらの動的型スライスのいずれも使用していないため、型を通常どおり処理できます。
以上がインターフェイス {} からプライベート動的型を変換するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。