gpt4 book ai didi

rest - 使用类型嵌入访问特定字段?

转载 作者:行者123 更新时间:2023-12-01 20:25:41 34 4
gpt4 key购买 nike

我想知道如何使用go的继承版本访问单个特定字段?

现在我有3个结构,Trade结构是所有其他结构的基本结构,但是我的另外两个结构只需要基本结构中的几个字段。无论如何,仅继承那些结构?

我希望请求的主体为Trade Struct,然后将其转换为internalTrade,最后我想返回tradesubmmited响应。

type Trade struct {
ClientTradeId string `json:"clientTradeId"`
Date int `json:"date"`
Quantity string `json:"quantity"`
Price string `json:"price"`
Ticker string `json:"ticker"`
}
type InternalTrade struct {
Id string `json:"Id"`
Trade *Trade `json:"Trade"`
}

type TradeSubmitted struct {

TradeId string `json:"TradeId"`
Trade *Trade `json:"ClientTradeId"`

}

func createTrade(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")

var trade Trade
var internalTrade InternalTrade
var tradeSubmitted TradeSubmitted

_ = json.NewDecoder(r.Body).Decode(&trade)


internalTrade.Id = string(rand.Intn(1000000))
internalTrade.Trade.ClientTradeId = trade.ClientTradeId
internalTrade.Trade.Date = trade.Date
internalTrade.Trade.Quantity = trade.Quantity
internalTrade.Trade.Price = trade.Price
internalTrade.Trade.Ticker = trade.Ticker

tradeSubmitted.Trade.ClientTradeId = trade.ClientTradeId
tradeSubmitted.TradeId = internalTrade.Id

trades = append(trades, internalTrade)

json.NewEncoder(w).Encode(&tradeSubmitted)

}

最佳答案

第一:嵌入不是继承。在您的模型中,Trade只是结构的一个字段。

看起来在您的模型中InternalTrade只是带有id的Trade。初始化InternalTrade的方式是错误的,因为internalTrade.Trade为nil,并且您将nil-pointer的成员设置为结构。反而:

internalTrade.Id = string(rand.Intn(1000000))
internalTrade.Trade=&trade

或者:
type InternalTrade struct {
Id string `json:"Id"`
Trade Trade `json:"Trade"`
}


internalTrade.Id = string(rand.Intn(1000000))
_ = json.NewDecoder(r.Body).Decode(&internalTrade.Trade)

最后, TradeSubmitted实际上与 Trade没有任何共同之处,您可以
type TradeSubmitted struct {
TradeId string `json:"TradeId"`
ClientTradeID string `json:"ClientTradeId"`
}

关于rest - 使用类型嵌入访问特定字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59596371/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com