在 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。
以上就是在 Go 中,如何向嵌套结构体数组添加结构体?的详细内容,更多请关注硕下网其它相关文章!