用数组初始化结构

时间:2021-03-07 17:31:54

标签: go struct

感兴趣的结构如下所示

type rect struct {
width, height float64
testArray []struct{
    id    string
  }
}

我正在尝试初始化结构,如下所示

r := rect{
    width: 10,
    height: 10,
    testArray: []struct{
        id: "wwwww",
    }, 
    {
        id: "wwwww",
    },
}

但是它给我一个错误说

<块引用>

语法错误:意外:,需要类型

2 个答案:

答案 0 :(得分:0)

这是一个工作示例:

type test struct {
   id string
}

type rect struct {
   height float64
   width float64
   testArray []test
}

func main() {
   r := rect{
      height: 10,
      width: 10,
      testArray: []test{
         {id: "April"},
         {id: "March"},
      },
   }
}

答案 1 :(得分:0)

当然更好的解决方法是显式声明 struct{id string},但最初的实现也不错。

在您的声明中,您有 testArray []struct{id string} 其中 struct { id string } 是您的内联类型。 所以你唯一缺少的是一个额外的大括号和内联结构的重新声明:

r := rect{
    width: 10,
    height: 10,
    testArray: []struct{ id string} { // re declare the inline struct type
      { id: "April" }, // provide values
      { id: "March" },
     },
}