gpt4 book ai didi

go - 我如何获取数组元素的地址,该数组元素是结构的元素,该结构是指针

转载 作者:行者123 更新时间:2023-12-01 22:33:26 26 4
gpt4 key购买 nike

我有一个递归函数,该函数对指向树状结构的指针进行操作。
该结构属于目录,并且其中一个元素是子目录数组(即directory [])。当我遍历该数组时,我想获取一个元素并将其地址(&)传递给该函数。我怎么做?
我有一个*目录,我想要(* directory).subdirectories [7]的地址。显然&directory.subdirectories [7]不是地址。正确的语法是什么?

type directory struct {
name string
subdirectories []directory
}

func compareDirectories(asIs *directory, toBe *directory) {
for k, inputDir := range toBe.subdirectories {
for l, outputDir := range asIs.subdirectories {
if inputDir.name == outputDir.name {
compareDirectories(&(asIs.subdirectories[l]), &(toBe.subdirectories[k]))
}
}
}
}
compareDirectories的正确语法是什么?

最佳答案

&directory.subdirectories[7]是正确的语法,但是请不要将类型名与变量名混淆。 directory是类型名称,您需要一个*directory类型的变量,并使用该变量的名称代替directory(不一定是变量,而是*directory类型的值)。
请参阅以下示例:

dir := &directory{
name: "foo",
subdirectories: []directory{
7: directory{name: "bar"},
},
}
p := &dir.subdirectories[7]
fmt.Printf("%T %+v", p, p)
哪个输出(在 Go Playground上尝试):
*main.directory &{name:bar subdirectories:[]}

关于go - 我如何获取数组元素的地址,该数组元素是结构的元素,该结构是指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63998674/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com