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

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

如何將數據插入到golang中的多維數組中?

如何將數據插入到golang中的多維數組中?

Go
明月笑刀無情 2023-04-24 16:20:46
我有一個動態多維數組,我需要從循環中動態填充。我如何定義數組并填充數據。這是我正在嘗試的代碼var arrDetails[][]stringvar index int = 0for _, orderdetails := range ordersfromdb {    arrDetails[index]["OrderNumber"] = "001"    arrDetails[index]["customernum"] = "cust_001"    arrDetails[index]["orderstatus"] = "open"    arrDetails[index]["orderprice"] = "200"    index++}我面臨的錯誤:non-integer slice index "OrderNumber"non-integer slice index "customernum"non-integer slice index "orderstatus"non-integer slice index "orderprice"我在 php 中做了同樣的事情并且工作完美:for ($i=0;$i<5:$i++){     $arr_orderdetails[$i]["OrderNumber"] = "001";     $arr_orderdetails[$i]["customernum"] = "cust_001";     $arr_orderdetails[$i]["orderstatus"] = "open";     $arr_orderdetails[$i]["orderprice"] = "200";}我是 golang 的新手,無法找到問題出在哪里,非常感謝任何幫助。
查看完整描述

4 回答

?
波斯汪

TA貢獻1811條經驗 獲得超4個贊

讓我們考慮這個解決方案:


arrDetails := map[int]map[string]string{}


index := 0

for _, orderdetails := range ordersfromdb {

? ? arrDetails[index] = map[string]string{} // you have to initialize map


? ? arrDetails[index]["OrderNumber"] = "001"

? ? arrDetails[index]["customernum"] = "cust_001"

? ? arrDetails[index]["orderstatus"] = "open"

? ? arrDetails[index]["orderprice"] = "200"


? ? index++

}

要將結果轉換為 json(正如我看到你在對@liao yu 的回答的評論中提出的問題),我們應該學習更多關于標簽的知識:


import (

? ? "encoding/json"

? ? "fmt"

)


type OrderDetails struct {

? ? Number? ?string `json:"number"`

? ? Customer string `json:"customer"`

? ? Status? ?string `json:"status"`

? ? Price? ? string `json:"price"`

}


func main() {

? ? ordersfromdb := []int{1, 2, 3}


? ? var arrDetails []OrderDetails

? ? for _, v := range ordersfromdb {

? ? ? ? arrDetails = append(arrDetails, OrderDetails{

? ? ? ? ? ? Number:? ?fmt.Sprintf("order_number_%v", v),

? ? ? ? ? ? Customer: fmt.Sprintf("customer_%v", v),

? ? ? ? ? ? Status:? ?fmt.Sprintf("order_status_%v", v),

? ? ? ? ? ? Price:? ? fmt.Sprintf("$%v", v),

? ? ? ? })

? ? }


? ? data, err := json.Marshal(arrDetails)

? ? if err != nil {

? ? ? ? panic(err)

? ? }

? ? fmt.Println(string(data))

}


查看完整回答
反對 回復 2023-04-24
?
天涯盡頭無女友

TA貢獻1831條經驗 獲得超9個贊

你可以試試這個:


import "fmt"


func main() {


    var arrDetails []map[string]string

    var index int = 0


    //for _, orderdetails := range ordersfromdb {

    for i:=0; i<5;i++ {

        detail := make(map[string]string)


        detail["OrderNumber"] = "001"

        detail["customernum"] = "cust_001"

        detail["orderstatus"] = "open"

        detail["orderprice"] = "200"

        arrDetails = append(arrDetails, detail)


        index++

    }

    fmt.Printf("Hello, playground %+v", arrDetails )

}


查看完整回答
反對 回復 2023-04-24
?
慕的地10843

TA貢獻1785條經驗 獲得超8個贊

正如您在此處將arrDetails變量定義為多維切片一樣[][]string。這意味著您不能將 a 分配string給它keys,而可以將字符串分配為值。


你可以像下面我提到的那樣做你的代碼。


package main


import (

    "fmt"

)


func main() {

  var arrDetails [][]string

  var s []string

  var index int

  for i:=0; i<5;i++ {

     s = []string{"001", "cust_001", "open", "200"}

     arrDetails = append(arrDetails, s)

     index++

  } 

fmt.Printf("Hello, playground %+v", arrDetails )

}

或者,如果你想要keys配對value,那么你必須用作map:


var arrDetails map[string]string


查看完整回答
反對 回復 2023-04-24
?
www說

TA貢獻1775條經驗 獲得超8個贊

我按如下方式填充多維數組


arrDetails[index][0] = "001"

arrDetails[index][1] = "cust_001"

arrDetails[index][2] = "open"

arrDetails[index][3] = "200"


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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