gpt4 book ai didi

go - 声明指向结构的全局指针

转载 作者:数据小太阳 更新时间:2023-10-29 03:25:27 26 4
gpt4 key购买 nike

我想声明一个指向全局结构的指针,这样我就可以在我的包中的其他文件中访问这个指针。我该怎么做?

详细信息:包 Y 有名为“Cluster”的结构和一些名为 NewCluster 等的函数。

type Cluster struct {
}
func NewCluster(self *Node, credentials Credentials) *Cluster {
return &Cluster{
}
}

现在,当我尝试如下访问上面的集群时,从包“X”开始,它运行良好

集群 := Y.NewCluster(节点, 凭据)

现在,我想将这个“集群”声明为全局变量,以便我可以在我的“X”包的其他文件中访问它。所以,我试图通过多种方式声明它,但它不起作用。我如何在全局范围内声明它?然后如何在我的“X”包的其他文件或同一文件中访问它(以调用相同的 NewCluster 函数)?

编辑:我尝试声明为 var cluster Cluster、var *cluster Cluster、var cluster *Cluster 等,但没有任何效果。

最佳答案

The scope of an identifier denoting a constant, type, variable, or function (but not method) declared at top level (outside any function) is the package block.

Go Language Specification: Scope

因此在函数外部的一个包文件中声明的变量应该在任何其他包文件中可用。

我认为您在这里缺少的只是集群类型的包名称:您需要一个合格的标识符。

A qualified identifier is an identifier qualified with a package name prefix. Both the package name and the identifier must not be blank.

Go Language Specification: Qualified Identifiers

类型 Cluster 在包 Y 中定义,函数 NewCluster 也是如此。当您从包 X 访问 NewCluster 时,您通过在函数名称前加上包名称和一个点来使用限定标识符:

cluster := Y.NewCluster(node, credentials)

当您尝试从包 X 引用包 Y 中的类型时,您需要使用限定标识符来执行此操作。例如:

var cluster *Y.Cluster

关于go - 声明指向结构的全局指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43269769/

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