問題タブ [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.

0 投票する
1 に答える
1624 参照

go - nil インターフェイスを nil 他のインターフェイスにキャストする方法

古典的な Go nil インターフェイスの問題があります。

interface{}から割り当てnil errorた をインターフェイスにアサートしようとしていerrorます。その文は紛らわしいので、便利な例があります: https://play.golang.com/p/Qhv7197oIE_z

出力:

つまり、インターフェイスからインターフェイスにダウンキャストしようとしnil interface{}ていnil errorます。interface{}が最初から割り当てられていることがわかっている場合、これを行うエレガントな方法はありnil errorますか?

参考までに、これが異常に思える場合は、テストのためにいくつかのモックを実装しているためです。

0 投票する
2 に答える
182 参照

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

0 投票する
1 に答える
1332 参照

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()、ポインターレシーバーがありません。

これを修正して、モック化されたハンドラー関数を使用してテスト サーバーを作成するにはどうすればよいですか?