Go(golang)实际上是否允许变量名中的unicode字符?

时间:2015-11-26 22:31:39

标签: unicode go

或者这是一个神话? 无法在任何官方文档中看到它(它就在那里,D'哦!) - 当使用带有go-plus软件包的Atom时,它似乎对我不起作用。我做了很多数学运算,这很遗憾,我喜欢数学符号。

更新:我不认为任何数学符号是深奥的:‖⏋∪ 与任何表情符号相比:

参考官方来源的是或否答案就足够了!

更新:感谢elithrar的回答,我发现'拉丁字母侧向点击'ǁ是我想要的'双垂直线'看似完美的模拟。

3 个答案:

答案 0 :(得分:3)

根据https://golang.org/ref/spec#Identifiers

支持某些的Unicode类别
  

标识符命名程序实体,例如变量和类型。标识符是一个或多个字母和数字的序列。标识符中的第一个字符必须是字母。

identifier = letter { letter | unicode_digit } .

上述类在规范中定义为:

unicode_letter = /* a Unicode code point classified as "Letter" */ .
unicode_digit  = /* a Unicode code point classified as "Decimal Digit" */ .
     

在Unicode标准6.3中,第4.5节“常规类别”定义了一组字符类别。 Go会将类别LuLlLtLmLo中的字符视为Unicode字母,将类别Nd中的字符视为Unicode数字。

“简短”的答案是支持某些运算符,具体取决于它们的字符类。更多深奥/专家不会。

答案 1 :(得分:3)

即可。我用日语和英语混合编程了几个月。我项目中的所有类型都是两个字符。

示例:

type T型 struct{}; //model      (literally: mold/model)
type T示 struct{}; //view       (literally: show      )
type T師 struct{}; //controller (literally: master    )

"清洁代码"的对立面。这个想法是你的大脑更好 解析简短的变量名称。

此外,在创建新问题域时,变量名称将失控。 想象一下,我们正在编写一个新东西。将经过碾磨的燕麦与水混合,加入甜味结晶物质,然后在热水箱中热处理35分钟。

变量名称: HeatTreatedMilledOatsWithWaterAndSweetCrystal

是的,我们可以称之为蛋糕。但是还没有人发明过蛋糕。

或者我们可以:

//Literally: 食=="Meal". 
//In Code  : 食=="Heat Treated Milled Oats,Water,And Sweet Crystal"
type T食 struct{};

答案 2 :(得分:1)

为什么不呢 ľubozvučná_slovenčina:= 3

有效,但对于那些不懂这种语言的程序员来说,这并不好。