在Go语言中,标识符必须以一个大写字母开头,这样才可以被外部包的代码所使用,这被称为导出。标识符如果以小写字母开头,则对包外是不可见的,但是他们在整个包的内部是可见并且可用的。但是包名不管在什么情况下都必须小写。
在设计Go语言时,设计者们也希望确保它不是过于以ASCII为中心,这意味着需要从7位ASCII的范围来扩展标识符的空间。 所以Go语言标识符规定必须是Unicode定义的字母或数字,标识符是一个或多个Unicode字母和数字的序列, 标识符中的第一个字符必须是Unicode字母。
这条规则还有另外一个不幸的后果。由于导出的标识符必须以大写字母开头,因此根据定义,从某些语言的字符创建的标识符不能导出。目前唯一的解决方案是使用像“A语言”这样的东西,但这显然不能令人满意。
总而言之,为了确保我们的标识符能正常导出,我们建议在开发中还是尽量使用ASCII 码来作为标识符,虽然设计者们在避免以ASCII 码为中心,但出于习惯我们还是服从于这个现实。
那么问题来了,使用中文命名的标识符能够正常导出吗?希望大家在了解后面的知识后,可以尝试一下试试。