在设计Go时,我们希望确保它不会过度以 ASCII 为中心,这意味着将标识符的空间从 7 位 ASCII 的限制中扩展出来。Go的规则--标识符字符必须是Unicod定义的字母或数字--很容易理解和实现,但也有限制。例如,组合字符被设计排除在外,这就排除了一些语言,如梵文。
这条规则还有另一个不幸的后果。 由于导出的标识符必须以大写字母开头,因此根据定义,不能导出由某些语言的字符创建的标识符。 目前唯一的解决办法是使用类似 X日本語 这样的语言,但这显然不能令人满意。
从最早的语言版本开始,人们就在考虑如何最好地扩展标识符空间,以适应使用其他母语的程序员。具体怎么做仍然是一个活跃的讨论话题,未来的语言版本可能会在标识符的定义上更加自由。例如,它可能会采用Unicode组织对标识符建议中的一些想法。无论发生什么情况,都必须在兼容(或扩展)字母大小写确定标识符可见性的方式下兼容完成,这仍然是Go最受欢迎的功能之一。
目前,我们有一个简单的规则,可以在不破坏程序的情况下进行扩展,该规则避免了肯定会因允许歧义标识符的规则而引起的错误。
Golang 外文翻译golang.org/doc/faq#uni…