在req.go中,我有:
package basic
type Headers struct {
}
type Body struct {
}
在res.go中,我有相同的内容:
import sys
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
class Window(QMainWindow):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.lcd = QLCDNumber()
self.lcd.setFixedSize(150, 70) # Set the size you want
self.lcd.display(12345)
centralWidget = QWidget()
self.setCentralWidget(centralWidget)
self.mainLayout = QGridLayout(centralWidget)
self.mainLayout.addWidget(self.lcd, 0, 0, Qt.AlignRight) # Set the alignment option
self.mainLayout.addWidget(QTextEdit("TextEdit..."), 1,0)
self.mainLayout.addWidget(QPushButton("Button"), 2,0, Qt.AlignCenter)
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Window()
ex.show()
sys.exit(app.exec_())
所以我得到这个错误:
此包中重新声明了“标头”
在此包裹中重新声明了“身体”
解决此问题的唯一方法是将req和res放在自己的文件夹中吗?如此之多的文件夹。
答案 0 :(得分:1)
包是创建分离的可重用代码的基本单位。从包内部,通过其名称引用其identifiers(在包中声明的标识符)。从“外部”(从其他程序包)导入程序包,并使用qualified identifier引用它的标识符,
QualifiedIdent = PackageName "." identifier .
当一个包包含多个文件时,在任何包文件中声明的每个标识符都将属于该包块。引用自Spec: Declarations and scope:
表示在顶层(任何函数之外)声明的常量,类型,变量或函数(但不是方法)的标识符的范围是包块。
这意味着您不能在同一包的2个文件中声明相同的标识符。
如果考虑一下,应该是这样。如果外面有人写basic.Header
,会发生什么?那应该是哪个Header
?
一种选择是将它们放入2个单独的包中:req
和resp
,然后可以将它们称为req.Header
和resp.Header
,您确切知道什么它们只是通过查看这些合格的标识符。
如果您不想要2个软件包,只需对其重命名。给他们起有意义的名字,例如ReqHeader
和RespHeader
,然后您可以像basic.ReqHeader
和basic.RespHeader
这样称呼他们。