猿问

在 Golang 中赋值

我创建了一个类型的 var


var RespData   []ResponseData

ResponseData 是一个如下结构:


type ResponseData struct {

    DataType       string      

    Component      string      

    ParameterName  string      

    ParameterValue string      

    TableValue     *[]Rows 

}

type TabRow struct {

    ColName     string 

    ColValue    string 

    ColDataType string 

}

type Rows *[]TabRow

我想填充TableValue类型*[]Rows。


您能否通过在TableValue.


慕哥9229398
浏览 221回答 3
3回答

偶然的你

TableValue是指向[]Rows(的切片Rows)的指针。Rows是指向 a []TabRow(的切片TabRow)的指针。所以你可以Rows用切片文字创建一个值,并获取它的地址,&这样你就有一个指向[]TabRow- 这将是类型Rows。并且您可以[]Rows通过使用另一个切片文字(创建 a []Rows)获取指向的指针,并获取其地址,该地址*[]Rows的类型为 ,TableValue因此您可以直接将其分配给ResponseData.TableValue。所以你可以这样做:var tv1 Rows = &[]TabRow{TabRow{"name11", "value11", "type11"},    TabRow{"name12", "value12", "type12"}}var tv2 Rows = &[]TabRow{TabRow{"name21", "value21", "type21"},    TabRow{"name22", "value22", "type22"}}var TableValue *[]Rows = &[]Rows{tv1, tv2}fmt.Println(TableValue)for _, v := range *TableValue {    fmt.Println(v)}输出:&[0x10436180 0x10436190]&[{name11 value11 type11} {name12 value12 type12}]&[{name21 value21 type21} {name22 value22 type22}]在Go Playground上试一试。在指定元素(类型TabRow)的切片文字中,您甚至可以省略类型,它变成了这样:var tv1 Rows = &[]TabRow{{"name11", "value11", "type11"},    {"name12", "value12", "type12"}}var tv2 Rows = &[]TabRow{{"name21", "value21", "type21"},    {"name22", "value22", "type22"}}如果您使用Short variable declaration,您甚至可以进一步缩短它(在Playground上尝试):tv1 := &[]TabRow{{"name11", "value11", "type11"}, {"name12", "value12", "type12"}}tv2 := &[]TabRow{{"name21", "value21", "type21"}, {"name22", "value22", "type22"}}TableValue := &[]Rows{tv1, tv2}

呼如林

func main() {    rowsList := []TabRow{        TabRow{            ColName:     "col1",            ColValue:    "col1v",            ColDataType: "string",        },        TabRow{            ColName:     "col2",            ColValue:    "col2v",            ColDataType: "int",        }}    rows := Rows(&rowsList)    resp := ResponseData{        DataType:       "json",        Component:      "backend",        ParameterName:  "test",        ParameterValue: "cases",        TableValue:     &rows,    }    fmt.Printf("%v", resp)}

慕田峪7331174

您可以这样简化您的结构:type ResponseData struct {    DataType       string          Component      string          ParameterName  string          ParameterValue string          TableValue     []*TabRow }type TabRow struct {    ColName     string     ColValue    string     ColDataType string }然后你可以填充它:resp := ResponseData {    DataType: "",    Component: "",    ParameterName: "",    ParameterValue: "",    TableValue: []*TabRow{      &TabRow{"","",""},      &TabRow{"","",""},      &TabRow{"","",""},    },}并添加一个新的 TabRow:resp.TableValue = append(resp.TableValue, &TabRow{"","",""})
随时随地看视频慕课网APP

相关分类

Go
我要回答