Golang Go语言中的一个“坑”

今天下午抽空想学学 go 语言,照着菜鸟教程写个 hello world 编译报错,研究了一下是因为模块导出的方法名必须大写字母开头

用过 go 语言的肯定不会犯这个错,但是我在想,如果 go 语言这样设计,不就只能用英语编程了?

我就特别喜欢给方法名函数名类型名属性名取中文😳


Golang Go语言中的一个“坑”
46 回复

规范里已经写明了

更多关于Golang Go语言中的一个“坑”的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


易语言欢迎你

你这个命名。。。真的不会被喷吗。。。

这行不适合你。

中文命名,很少见。

go 怎么可能有坑,楼主觉得有坑肯定是楼主信仰不够坚定,是要下火狱的。

小心 go 厨把楼主抓起来处以石刑。(手动斜眼笑

前排花生瓜子凉茶

楼主 去搞个 cgo 语言出来

你去用易语言吧。

上面的都没用过 C#吗? C#的属性名可以是中文的。

谁说只能是英文 只要是大写字母就可以吧

不能中文 但是可以用拼音呀 嘻嘻

但是不管是 c#还是 go (其实 c 艹也支持 u8 命名的),甚至是 py/js,你敢写中文的话,自己玩还好,公司项目一般要被同事骂,开源项目就是被社区吐槽。易语言习语言另说

中文编程,切换输入法不累吗

你适合用图形化编程

楼主之前用易语言玩外挂的吧

楼主重新定义了“坑”?

???

认真想一下,这确实是一个问题。

我来看看道友怎么说

别说了,就现在情况也切输入法切死了 真心累

怀念不用输中文的项目

下一个坑:json 结构体的字段名需要大写才能被解析 /doge

看来是时候重新发明一下键盘了

你转行吧

怎么就转行了。。 虽然用中文比较受歧视 但不代表存在没有意义, 连 C++都可以中文为什么 Go 就要例外,而且官方态度也是接受这个提议

我当时还特意测试了一下 反正中文变量没啥问题。不能中文都是以前语言对 unicode 不完整留下的坑

我怎么记得 java 也可以中文函数名呢

建议上面那些让人转行的卫道士去 repo 相关 issue 展示一下强国人士的“强势”嘴脸

建议楼主基于 go 语言创新一些有自主知识产权的 狗语言 出来。
如果然后对应的是,第一个字母是动物。

一直都可以用中文。只是目前的 Go 规范是以大写 unicode 字母开头的是导出的名字,而中文没有大小写区别。最大的影响是对 json 或数据库字段不好直接用中文。虽然特殊场景略有不变,但也不是什么严重的问题。拿 cplusplus 来论证就没有必要了,因为两者都看不上对方。好在官方也有改动的意愿,期待 2020 年的 Go2 吧

回应一下 append:

> 如果你的项目使用中文注释,那么就可以使用中文变量,更容易看懂 & 变量的本来就是给人看的,当然是越容易看懂越好
这逻辑我没法回应。。。好像挺对的

> 而且写中文注释不用切输入法吗?
要知道变量的使用频率是很高的,而且短(通常而言,Java 闭嘴),因此带来的情况就会变得很尴尬,比如 for 键,值 := range 文件们 输入起来绝对够酸爽。而注释一般是较大段地进行,不需要考虑符号问题。当然如果你把输入法设置成英文符号就没有问题了,但那样又可能被社交圈中的“文化自信”群体怼。

> 而且有一些比较本土化的项目,很多名词甚至无法使用英文
这就是很多人用拼音的理由?事实上我还真没见过太多不能用英文的,如果因为几个词而整个代码中英文变量名横行那可就难受了,如果全中文那就更 tm 难受了。

反正谁敢在我项目组里,用中文变量直接劝退

用中文补全很麻烦吧?

我提到注释用中文,变量即可用中文主要是说明中文变量在一些非国际化项目中是可用的

大多数项目英文 okay,然而确实有的项目英文表达能力是力有未逮的,比如《西游记》背景的游戏,场景人物当然可以翻成英文(参考《 Journey to the west 》),但是维护性就堪忧了

jb 家的 ide 中英文补全是一视同仁的,(将来)甚至可以开发出根据拼音补全中文

很好奇 Go 官方都表示支持了,为什么楼上一堆人却冷嘲热讽?
有没有和用不用是两码事,你不需要可以不用,但别人可能需要。

所以我觉得,还是下划线起始的标识符 private 这种设定比较好,,Go 现在这个大小写区分感觉不友好

GO 不需要你,你不需要 GO

作为南方人,我宁愿用英语也不用拼音,‘ n ’ ‘ l ’ 分不清啊

兄弟你这样会被喷啊




呵呵 中文补全要打几次键盘

我挺你 中文变量名确实有意思。。。

从内心来说,我也想用中文变量名,但问题在于 IDE 支持不好,所以输入麻烦,易语言用中文,是因为 IDE 支持得好,可以输入中文首拼实现中文变量名自动上屏。我专门下载了易语言试了,输入中文确实方便。

所以,现在我还是用的字母做变量名,期待有人搞插件实现中文变量名首拼上屏的功能。

我觉得 golang 很坑,不过没有办法. 所以我用算盘写代码,楼主遇到的坑我完美的跳过了

在Golang(Go语言)的开发过程中,确实存在一些容易让新手甚至老手掉坑的地方。这里分享一个常见的“坑”:并发编程中的goroutine和数据竞争。

Go语言以其强大的并发处理能力著称,goroutine的轻量级线程使得实现高并发变得相对简单。然而,这也带来了数据竞争的风险。当多个goroutine同时访问和修改共享数据时,如果没有适当的同步机制,就会导致数据竞争,进而产生不可预测的结果。

要避免这个坑,需要注意以下几点:

  1. 使用互斥锁(sync.Mutex):在访问共享数据之前,先获取锁,确保同一时间只有一个goroutine能够访问该数据。
  2. 使用通道(channel):通道是Go语言提供的用于goroutine间通信的机制。通过通道传递数据,可以避免直接访问共享数据,从而减少数据竞争的风险。
  3. 避免全局变量:全局变量是数据竞争的常见来源。尽量使用局部变量或通过参数传递数据,以减少goroutine间的数据共享。
  4. 使用原子操作:对于简单的计数器等场景,可以使用Go语言标准库中的sync/atomic包提供的原子操作,这些操作是线程安全的。

总之,Go语言中的并发编程虽然强大,但也伴随着数据竞争的风险。开发者需要谨慎使用goroutine,并通过适当的同步机制来确保数据的一致性和安全性。只有这样,才能充分利用Go语言的并发优势,编写出高效且稳定的程序。

回到顶部