[英]Assigning value in 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
我想填充*[]Rows
類型的TableValue
。
您能否通過在TableValue
分配任何值來TableValue
。
TableValue
是一個指向[]Rows
(切片Rows
)。
Rows
是一個指向[]TabRow
( []TabRow
切片)的TabRow
。 所以你可以用切片文字創建一個Rows
值,並用&
獲取它的地址,這樣你就有一個指向[]TabRow
的指針 - 這將是Rows
類型。
您可以通過使用另一個切片文字(創建[]Rows
)獲取指向[]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)
}
您可以這樣簡化您的結構:
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{"","",""})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.