当前位置: 首页 > 知识库问答 >
问题:

go 嵌套数组构造出一个能添加结构的函数?

云俊名
2023-11-28

语言 go 写了一个嵌套数组 想要构造出一个能够添加一个结构体的函数

//golangpackage mainimport (    "fmt")type dog struct {    name string    age  int    *cat}type cat struct {    id int}func ll(name string, age int, id int) *dog {    oo(id)    name = name    age = age    return &dog{        name: name,        age:  age,    }}func oo(id int) *cat {    return &cat{        id: id,    }}func main() {    s9 := ll("lal", 90, 80)    fmt.Println(s9)    fmt.Println(s9.name, s9.age, s9.id)}
&{lal 90 <nil>}

这是运行的结果 想要知道 nil为什么没变 为什么不是80

共有2个答案

晏修诚
2023-11-28

oo 你并没有写进结构

充运浩
2023-11-28

ll返回的是dog,dog默认没有cat写入。你在ll里调用的oo的返回值,根本没有接。改成return &dog {name:name,age:age, cat: oo(id)}看看

 类似资料:
  • 问题内容: 我已经开始使用https://mholt.github.io/json-to-go/将API JSON转换为go结构,但我真的很喜欢它,但是我仍然坚持如何在Report Definition结构中初始化Filters数组结构如下所示。 我似乎无法引用在Filters结构甚至是Filters结构中声明的项,以创建新的Filter项目并将其附加到Filters。 是否可以使用原样编写的Re

  • 我不确定我是否过度工程化了,但我正在考虑创建一个枚举,其中包含一个枚举列表作为它的值,从中我可以得到它的值。 我无法确定枚举的类型,以便正确地将值数组筛选到正确的枚举。例如,我可以用轻松地获得US枚举。我遇到的困难是从该数组中获得正确的值。我尝试比较名称,

  • 问题内容: 这个问题是关于Java的有趣行为的:在某些情况下,它为嵌套类生成了其他(不是默认的)构造函数。 这个问题也与Java使用该奇怪的构造函数生成的奇怪的匿名类有关。 考虑以下代码: 这将打印: 好。接下来,让构造函数私有: 再次运行程序。接收: 还可以 但是现在,让我们以这种方式修改方法(添加类创建的新实例): 然后输入变为: 这是什么: a.TestNested $ A(a.TestNe

  • 我的问题是关于OOP(C)中的构造函数。当我在一个类中将默认构造函数定义为private,并且在main中将该类的一个对象初始化为default时,就会出现默认构造函数不可访问的错误。这很好。但我也在Public部分中使用默认参数构造函数,当我再次在main中初始化对象时,就会出现对函数重载的不明确调用。所以我的问题是,如果不能从main访问私有构造函数,那么编译器应该调用公共部分中的构造函数,这

  • 问题内容: 我有一个结构,我希望使用一些合理的默认值对其进行初始化。 通常,这里要做的是使用构造函数,但是由于go在传统意义上并不是真正的OOP,所以它们不是真正的对象,也没有构造函数。 我注意到了init方法,但这是在包级别。还有其他类似的东西可以在结构级别使用吗? 如果不是,那么Go中这种事情的公认最佳实践是什么? 问题答案: 实际上有两种公认的最佳实践: 将结构的零值设为明智的默认值。(尽管

  • 当异常在构造函数中被抛出时,其中创建了多个对象,必须做些什么来清理内存。例如。 我的直觉是,将每个对new的调用放在一个单独的try-catch组中,并删除之前为其调用了,但这太冗长的所有对象(第一个try组不调用析构函数,第二个类调用第一个类的析构函数,第三个类调用前两个类的析构函数,以此类推)。我的问题是:最常见的处理方法是什么? 另外,假设类对象包含一个不是用new创建的对象(因为它在堆栈上