【问题标题】:Unable to initialise embedded struct无法初始化嵌入式结构
【发布时间】:2020-08-04 09:12:22
【问题描述】:

我在 packageA 中声明了以下结构

type FlagSkel struct {
    Name    string
    Short   string
    HelpMsg string
}

type FlagString struct {
    Value        string
    DefaultValue string
}

type CompositeFlagString struct {
    FlagSkel
    FlagString
}

在另一个包中,我正在尝试初始化(在任何函数之外)后一种类型的var,如下所示:

var Name = packageA.CompositeFlagString{
    FlagSkel: {
        Name:    "name",
        Short:   "",
        HelpMsg: "Something here",
    },
    FlagString: {
        DefaultValue: "",
    },
}

但是 vscode 编译器向我显示了附加的错误

我做错了什么?

【问题讨论】:

    标签: go


    【解决方案1】:

    您需要指定结构字面量的类型:

    packageA.CompositeFlagString{
        FlagSkel: packageA.FlagSkel{
            Name:    "name",
            Short:   "",
            HelpMsg: "Something here",
        },
        FlagString: packageA.FlagString{
            DefaultValue: "",
        },
    }
    

    【讨论】:

      【解决方案2】:

      您错过了设置要创建的内部结构的类型。 你的变量初始化应该是:

      var Name = packageA.CompositeFlagString{
          FlagSkel: packageA.FlagSkel {
              Name:    "name",
              Short:   "",
              HelpMsg: "Something here",
          },
          FlagString: packageA.FlagString {
              DefaultValue: "",
          },
      }
      

      如果你改变它,它应该可以工作。

      【讨论】:

      • 你说得对,我不知道这种语法。我更正了我的帖子。
      猜你喜欢
      • 2022-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多