亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將一個字符串連接到一個結構片段

將一個字符串連接到一個結構片段

Go
尚方寶劍之說 2023-04-24 17:04:13
我正在嘗試創建一個端點 Go API 以供前端 JavaScript 圖形庫使用。應該發生什么:/data 端點以獲取 JSON 數據數組。數據只是一片 go 結構,在這個例子中只有兩個,但它將超過 10000。圖形庫需要額外的元數據。它被保存為一個名為 AdditionalInfo 的變量。問題是當我想對 AdditionalInfo + AllAgents 進行編碼時,它不會讓我將字符串與結構片段連接起來。在結構切片的末尾還需要 ]` 以使其成為有效的 JSON問題:如何在結構切片的前后添加額外數據?將結構附加到一片結構是否有效?創建一個已知長度的切片然后使用范圍附加到它會更好嗎?
查看完整描述

1 回答

?
心有法竹

TA貢獻1866條經驗 獲得超5個贊

將附加信息、代理和右括號寫入響應:


 io.WriteString(w, "{")

 io.WriteString(w, AdditionalInfo)

 json.NewEncoder(w).Encode(AllAgents)

 io.WriteString(w, "]}")  // closing ] for data and closing } for root

[ ]請注意,這對代理進行了兩個級別的編碼。目前還不清楚這是否是您想要的。


另一種方法是創建一個與輸出結構匹配的 Go 值并對其進行編碼:


v := map[string]interface{}{

    "meta": map[string]interface{}{

        "page":    1,

        "pages":   1,

        "perpage": -1,

        "total":   350,

        "sort":    "asc",

        "field":   "RecordID",

    },

    "data": AllAgents,

 }

 if err := json.NewEncoder(w).Encode(v); err != nil {

    // handle error

 }

同樣,不清楚您希望在代理周圍嵌套多少。您可能需要這種變化:


v := map[string]interface{}{

    "meta": map[string]interface{}{

        "page":    1,

        "pages":   1,

        "perpage": -1,

        "total":   350,

        "sort":    "asc",

        "field":   "RecordID",

    },

    "data": []interface{}{AllAgents},

 }

 if err := json.NewEncoder(w).Encode(v); err != nil {

    // handle error

 }

回復:效率創建最終大小的切片通常比使用append. 通過使用指針切片[]*SingleAgent而不是結構值切片可能會獲得一些效率[]SingleAgent。


查看完整回答
反對 回復 2023-04-24
  • 1 回答
  • 0 關注
  • 124 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號