我知道以前曾多次以各种形式询问过这个问题,但我似乎无法以我需要的方式实施我正在学习的内容。任何帮助表示赞赏。
我有一系列交易所,它们都实现了大致相同的 API。例如,它们每个都有一个GetBalance端点。然而,有些有一个或两个独特的东西需要在函数中访问。例如,在调用它的余额 API 时exchange1需要使用 a ,而同时需要变量和变量。这是以后的重要说明。clientexchange2clientclientFutures
我的背景是普通的 OOP。显然 Go 在很多方面都是不同的,因此我在这里被绊倒了。
我目前的实现和思路如下:
在exchanges模块中
type Balance struct {
asset string
available float64
unavailable float64
total float64
}
type Api interface {
GetBalances() []Balance
}
在Binance模块中
type BinanceApi struct {
key string
secret string
client *binance.Client
clientFutures *futures.Client
Api exchanges.Api
}
func (v *BinanceApi) GetBalance() []exchanges.Balance {
// Requires v.client and v.clientFutures
return []exchanges.Balance{}
}
在Kraken模块中
type KrakenApi struct {
key string
secret string
client *binance.Client
Api exchanges.Api
}
func (v *KrakenApi) GetBalance() []exchanges.Balance {
// Requires v.client
return []exchanges.Balance{}
}
在main.go
var exchange *Api
现在我的想法是我应该能够调用类似的东西exchange.GetBalance()并且它会使用GetBalance上面的函数。我还需要某种铸造?我在这里很迷路。可以exchange是 Binance 或 Kraken——这在运行时决定。其他一些代码基本上调用一个GetExchange函数,该函数返回所需 API 对象的实例(已经在 BinanceApi/KrakenApi 中转换)
我知道继承和多态性不像其他语言那样工作,因此我非常困惑。我很难知道这里需要去哪里。Go 似乎需要大量烦人的代码来完成其他语言的动态工作😓
冉冉说
相关分类