登录
首页 >  Golang >  Go教程

在 Go 中,如何向嵌套结构体数组添加结构体?

时间:2024-12-12 10:43:02 259浏览 收藏

“纵有疾风来,人生不言弃”,这句话送给正在学习Golang的朋友们,也希望在阅读本文《在 Go 中,如何向嵌套结构体数组添加结构体?》后,能够真的帮助到大家。我也会在后续的文章中,陆续更新Golang相关的技术文章,有好的建议欢迎大家在评论留言,非常感谢!

在 Go 中,如何向嵌套结构体数组添加结构体?

嵌套结构和数组:添加结构方法

在 go 中,你希望创建一个函数来向嵌套数组中添加一个结构体。代码示例如下:

package main

import (
    "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)
}

但是,运行代码后,发现结构体的 cat 字段显示为 nil,而不是预期的 80。这是为什么?

答案是,ll 函数返回的是 *dog,而 dog 结构体默认没有初始化 cat 字段。在 ll 函数中,你调用了 oo 函数来创建 cat 结构体,但它的返回值并没有被赋给 dog 结构体的 cat 字段。

正确的代码应该是:

func ll(name string, age int, id int) *dog {
    oo(id)
    name = name
    age = age
    return &dog{
        name: name,
        age:  age,
        cat:  oo(id), // 这里赋值了 cat 字段
    }
}

修改后的代码将返回一个包含 cat 字段的 dog 结构体,其中 id 字段被正确初始化为 80。

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

相关阅读
更多>
最新阅读
更多>
课程推荐
更多>