如何为golang中的结构片赋值

Utk*_*thi 0 structure go

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

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",
       },
     },
   }
}
Run Code Online (Sandbox Code Playgroud)

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

Fli*_*mzy 6

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

 status: []v1.ReplicaStatus {
         IP              string
         Status          string
         DataUpdateIndex string
}{
Run Code Online (Sandbox Code Playgroud)

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

 status: []v1.ReplicaStatus{
   {
       IP:              "10.10.10.10",
       Status:          "Online",
       DataUpdateIndex: "1",
   },
   {
       IP:              "10.10.10.11",
       Status:          "Online",
       DataUpdateIndex: "1",
   },
 }
Run Code Online (Sandbox Code Playgroud)

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

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",
   },
 }
Run Code Online (Sandbox Code Playgroud)