gpt4 book ai didi

go - 错误 : Type is redeclared in this package

转载 作者:IT王子 更新时间:2023-10-29 02:08:19 34 4
gpt4 key购买 nike

I have this folder structure:

在 req.go 中,我有:

package basic

type Headers struct {
}

type Body struct {
}

在 res.go 中,我有相同的:

package basic

type Headers struct {
}

type Body struct {
}

所以我得到这个错误:

'Headers' redeclared in this package

'Body' redeclared in this package

解决这个问题的唯一方法是将 req 和 res 放在它们自己的文件夹中吗?啊这么多文件夹。

最佳答案

包是创建独立和可重用代码的基本单元。从包装内部,您可以引用其 identifiers (包中声明的标识符)按其名称。从“外部”(从其他包)导入包并使用 qualified identifier 引用它的标识符, 这是

QualifiedIdent = PackageName "." identifier .

当一个包由多个文件组成时,在包的任何文件中声明的每个标识符都属于包 block 。引自 Spec: Declarations and scope:

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.

这意味着您不能在同一包的两个文件中声明相同的标识符。

如果你仔细想想,这就是应该的样子。如果外部人员编写 basic.Header 会发生什么情况?这应该表示哪个 Header

一种选择是将它们放入 2 个单独的包中:reqresp,然后您可以将它们称为 req.Headerresp.Header,只要看看这些合格的标识符,你就知道它们到底是什么意思。

如果您不想要 2 个包,只需重命名它们即可。给它们起有意义的名字,比如 ReqHeaderRespHeader,然后你可以像 basic.ReqHeaderbasic.RespHeader 这样引用它们

关于go - 错误 : Type is redeclared in this package,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53355418/

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