機能的には関係がありますが、互いに異なる2つ(と今後の予定)の外部ライブラリをインポートしています。私は、次の操作を実行できるようにしたいと思います:構造体フィールドをジェネリック型にする方法
- ネストされた構造体
- のフィールドにそれぞれ割り当てる各
- の新しいオブジェクトを作成し、ネストされたを使用して、ライブラリのメソッドにアクセスすることができ構造体のフィールド大雑把
このような何か:答えのための私の検索で
import (
"github.com/bittrex_api_wrapper"
"github.com/kraken_api_wrapper"
)
type Exchange struct {
bittrex *data
kraken *data
}
type data struct {
cntr int
api ????
}
func Initialize() Exchange {
e Exchange
brex := bittrex_api_wrapper.New("APIKEY1", "SECRET1")
krak := kraken_api_wrapper.New("APIKEY2", "SECRET2")
brexData := data {
cntr: 0,
api: brex,
}
krakData := data {
cntr: 0,
api: krak,
}
e = Exchange {
bittrex: brexData,
kraken: krakData,
}
return e
}
func (e *Exchange) CheckBalance(exng string) float64 {
switch exng {
case "kraken":
return e.kraken.api.Balance()
case "bittrex":
return e.bittrex.api.Balance()
}
}
、それはのように思えますリフレクションパッケージやインターフェイスが私の解決策(またはその2つの組み合わせ)かもしれませんが、私は開発者ではなく、Go to newですので、Reflectは私の頭を少し上回りました。
ご協力いただきありがとうございます。
投稿したソースから正確にどのように動作させるかは分かりません。両方のAPIをすべての 'Exchange'オブジェクトで利用できるようにする必要がありますか?しかし、私は98%あなたがこれについてのリフレクションを必要としないと言うことができます。 – Adrian