問題タブ [go-interface]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
go - nil インターフェイスを nil 他のインターフェイスにキャストする方法
古典的な Go nil インターフェイスの問題があります。
interface{}
から割り当てnil
error
た をインターフェイスにアサートしようとしていerror
ます。その文は紛らわしいので、便利な例があります: https://play.golang.com/p/Qhv7197oIE_z
出力:
つまり、インターフェイスからインターフェイスにダウンキャストしようとしnil
interface{}
ていnil
error
ます。interface{}
が最初から割り当てられていることがわかっている場合、これを行うエレガントな方法はありnil
error
ますか?
参考までに、これが異常に思える場合は、テストのためにいくつかのモックを実装しているためです。
go - インターフェイスを使用する代わりに、json を適切な構造体にキャストする
次のjsonを非整列化するためのデータ構造を作成するのに苦労しています:
インターフェイスで次の構造体を使用する場合、問題はありません。
しかし、私はより厳密なタイピングが必要なので、試してみました:
しかし、残念ながら私は成功しませんでした。
これは、注文書を取得するために Kraken API を解析するために使用したコードです。
テストに使用するデータは次のとおりです。
編集
注bids
: 入力で受け取るデータは、 andの配列ではなく、投稿した最新の json ですasks
。
@chmike によって提案されたソリューションを統合しようとしました。残念ながら、データは私が投稿した最新のjsonであるため、いくつかの前処理が必要です。
asks
とに関連するjsonデータを抽出するために、次のようにコードに変更しましたbids
。
残念ながら、次のエラーが表示されます。
json: cannot unmarshal array into Go value of type json.Number
unit-testing - Goのmoqでhttp.Handlerをモックする方法は?
httptest.Server
呼び出されたリクエストを単純に記録する を作成することに興味があります。github.com/matryer/moq
そのために図書館を利用したい。
のモックを生成するために、http.Handler
その定義を というパッケージにコピーしましたclient
。
それから走った
client
以下を生成したディレクトリ内handler_mock.go
:
ただし、次を実行しようとするとclient_test.go
、
私は得る
ServeHTTP
実際、 (https://github.com/golang/go/blob/c112289ee4141ebc31db50328c355b01278b987b/src/net/http/server.go#L2008-L2013から)の実際の定義を見るとServeHTTP()
、ポインターレシーバーがありません。
これを修正して、モック化されたハンドラー関数を使用してテスト サーバーを作成するにはどうすればよいですか?