go - 如何给结构体的 slice 赋值

标签 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。这有什么问题?

最佳答案

您使用的是命名类型 (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",
   },
 }

关于go - 如何给结构体的 slice 赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48186467/

相关文章:

c# - 因非对象字段错误而错误对齐或重叠

Python,ctypes,多维数组

c - C 中的嵌套结构和取消引用指针

go - 访问Docker Swarm集群上Couchbase容器的IP地址

go - Go 中的并行 zip 压缩

go - 关于接口(interface)分配的困惑

c - 对txt中的结构化数据进行排序

html - 使侧边栏\页面大小均匀

Go 语言 : running routine on different process

go - 无法 brew switch go 版本