首页 > 解决方案 > 从不同包中导出的标识符的唯一性

问题描述

我正在阅读 go spec 并针对以下部分运行:

标识符的唯一性

给定一组标识符,如果一个标识符与集合中的其他标识符不同,则称为唯一标识符。如果两个标识符拼写不同,或者它们出现在不同的 中并且未导出,则它们是不同的。否则,它们是相同的。

我还不知道为什么引入这个定义很重要,但在我看来,这意味着来自不同包的同名导出标识符是相同的。我误解了什么吗?

标签: go

解决方案


我误解了什么吗?

是的。

标识符由包名限定。


Go 编程语言规范

合格的标识符

限定标识符是使用包名称前缀限定的标识符。包名和标识符都不能为空。

QualifiedIdent = PackageName "." identifier .

限定标识符访问不同包中的标识符,必须导入该标识符。标识符必须在该包的包块中导出和声明。

math.Sin  // denotes the Sin function in package math

进口申报

PackageName 用于限定标识符中以访问导入源文件中包的导出标识符。它在文件块中声明。如果省略 PackageName,则默认为导入包的包子句中指定的标识符。如果出现显式句点 (.) 而不是名称,则在该包的包块中声明的所有包的导出标识符都将在导入源文件的文件块中声明,并且必须在没有限定符的情况下访问。


推荐阅读