当前位置: 首页 > 面试题库 >

嵌套结构初始化文字

许琛
2023-03-14
问题内容

我怎样才能做到这一点:

type A struct {
    MemberA string
}

type B struct {
    A
    MemberB string
}

b := B {
    MemberA: "test1",
    MemberB: "test2",
}
fmt.Printf("%+v\n", b)

给出的编译结果为:“结构文字中的未知B字段’MemberA’”

当提供像这样的文字结构成员值时,如何初始化MemberA(从“父”结构)?


问题答案:

初始化时,匿名结构仅在其类型名称下(在您的情况下A)是已知的。与该结构关联的成员和函数仅在实例存在之后才导出到外部。

您必须提供一个有效的实例A来初始化MemberA

b := B {
    A: A{MemberA: "test1"},
    MemberB: "test2",
}

编译错误

结构文字中的未知B字段’MemberA’

确切地说:没有,MemberA因为它仍然存在,A而不是在其中B。实际上,
B永远不会MemberA,它将永远存在A。能够访问MemberA 的实例B只是语法糖。



 类似资料:
  • 问题内容: 我不知道如何初始化嵌套结构。在此处找到示例:http: //play.golang.org/p/NL6VXdHrjh 问题答案: 好吧,有什么特定的原因不使Proxy成为自己的结构? 无论如何,您有2个选择: 正确的方法是,只需将proxy移至其自己的结构,例如: 不太正确和丑陋的方法,但仍然有效:

  • 问题内容: 您如何初始化以下结构? 我试过了: 没用: 我试过了: 没用: 问题答案: 您是一个具有匿名结构类型的字段。因此,您必须重复类型定义: 但在大多数情况下,最好将其定义为rob74建议的单独类型。

  • 问题内容: 我有一个json作为 我想将我的结构编组到json之上并创建如下结构- 我在初始化上述结构时遇到麻烦。我不确定如何以以下方式初始化匿名结构: 我通过为页面信息创建一个单独的结构并将其与父结构附加在一起来解决此问题。但是,必须有某种方法来执行 匿名 嵌套结构的初始化,就像我对上面的 Fields (字符串切片)所做的一样。谁能将我重定向到一些指南来做到这一点? 问题答案: 这可行,但是很

  • 问题内容: 嗨,我是Golang的新手,请帮助我。我已经在结构内部定义了一个结构。但是,当我尝试初始化主结构时出现错误。 我得到的错误是:不能在字段值中使用(类型接口{})作为类型结构:需要类型声明。 请提出一种初始化DetailsFilter的方法。我尝试执行在Golang中初始化嵌套结构中描述的方法,但即使这样也不起作用。 问题答案: 不幸的是,如果结构字段的类型是匿名结构,则 _在构造时_只

  • 主要内容:初始化内嵌匿名结构体结构体内嵌初始化时,将结构体内嵌的类型作为字段名像普通结构体一样进行初始化,详细实现过程请参考下面的代码。 车辆结构的组装和初始化: 代码说明如下: 第 6 行定义车轮结构。 第 11 行定义引擎结构。 第 17 行定义车结构,由车轮和引擎结构体嵌入。 第 27 行,将 Car 的 Wheel 字段使用 Wheel 结构体进行初始化。 第 32 行,将 Car 的 Engine 字段使用 Engi

  • 请考虑以下示例: 如果我理解正确的话,根据https://en.cppreference.com/w/cpp/language/zero_initialization,它不能抛出,因为应该对B::A执行零初始化,就像对“没有构造函数的值初始化类类型的成员”一样。 如果它抛出,是编译器错误还是我遗漏了什么? 编辑:我在英特尔网站上提交了一个bug:https://community.intel.co