如何为golang中的结构片赋值

时间:2018-01-10 11:30:05

标签: go structure

我正在对我的方法使用表驱动测试,但在将值赋给结构数组的字段时出错,情况如下所示。

var validStats = []struct{
    status       []v1.ReplicaStatus
}{
   {
     status: []v1.ReplicaStatus {
             IP              string
             Status          string
             DataUpdateIndex string
    }{
       {
           IP:              "10.10.10.10",
           Status:          "Online",
           DataUpdateIndex: "1",
       },
       {
           IP:              "10.10.10.11",
           Status:          "Online",
           DataUpdateIndex: "1",
       },
     },
   }
}

我在第6行和代码末尾收到错误missing ',' in composite literal。这有什么问题?

1 个答案:

答案 0 :(得分:5)

您正在使用命名类型(ReplicaStatus),但随后尝试定义结构字段:

 status: []v1.ReplicaStatus {
         IP              string
         Status          string
         DataUpdateIndex string
}{

不要那样做。相反,这样做:

 status: []v1.ReplicaStatus{
   {
       IP:              "10.10.10.10",
       Status:          "Online",
       DataUpdateIndex: "1",
   },
   {
       IP:              "10.10.10.11",
       Status:          "Online",
       DataUpdateIndex: "1",
   },
 }

如果您使用的是未命名的类型,则只应在此上下文中定义字段名称,如:

status := []struct { // Notice this is now an anonymous struct type
         IP              string
         Status          string
         DataUpdateIndex string
}{
   {
       IP:              "10.10.10.10",
       Status:          "Online",
       DataUpdateIndex: "1",
   },
   {
       IP:              "10.10.10.11",
       Status:          "Online",
       DataUpdateIndex: "1",
   },
 }