登录
首页 >  Golang >  Go问答

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

来源:stackoverflow

时间:2024-03-12 17:27:26 350浏览 收藏

亲爱的编程学习爱好者,如果你点开了这篇文章,说明你对《如何获取数组元素的地址,该数组元素是结构体的元素,该结构体是指针》很感兴趣。本篇文章就来给大家详细解析一下,主要介绍一下,希望所有认真读完的童鞋们,都有实质性的提高。

问题内容

我有一个递归函数,它对指向树状结构的指针进行操作。

该结构是一个目录,其中一个元素是子目录数组(即directory[])。当我迭代该数组时,我想获取一个元素并将其地址 (&) 传递给函数。我该怎么做?

我有一个 *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:[]}

今天关于《如何获取数组元素的地址,该数组元素是结构体的元素,该结构体是指针》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>