V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
Cbdy
V2EX  ›  Go 编程语言

一个 go 语言的“坑”

  •  
  •   Cbdy · 2018-01-27 16:00:34 +08:00 via Android · 5036 次点击
    这是一个创建于 2525 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    第 1 条附言  ·  2018-01-27 19:44:47 +08:00
    如#18 给出的链接,说明 golang 官方已经意识到这个问题了

    很多人觉得中文变量比较奇怪,或者说 low,但是我的观点是:如果你的项目使用中文注释,那么就可以使用中文变量,更容易看懂,而且写中文注释不用切输入法吗?

    变量的本来就是给人看的,当然是越容易看懂越好,而且有一些比较本土化的项目,很多名词甚至无法使用英文
    45 条回复    2018-01-29 12:22:04 +08:00
    hand515
        1
    hand515  
       2018-01-27 16:02:31 +08:00
    规范里已经写明了
    tomine
        2
    tomine  
       2018-01-27 16:03:03 +08:00 via Android   ❤️ 1
    易语言欢迎你
    legendlzy
        3
    legendlzy  
       2018-01-27 16:05:19 +08:00
    你这个命名。。。真的不会被喷吗。。。
    6diyipi
        4
    6diyipi  
       2018-01-27 16:11:22 +08:00   ❤️ 6
    这行不适合你。
    gbin
        5
    gbin  
       2018-01-27 16:12:41 +08:00 via Android
    中文命名,很少见。
    bramblex
        6
    bramblex  
       2018-01-27 16:13:54 +08:00   ❤️ 2
    go 怎么可能有坑,楼主觉得有坑肯定是楼主信仰不够坚定,是要下火狱的。

    小心 go 厨把楼主抓起来处以石刑。(手动斜眼笑
    zsj950618
        7
    zsj950618  
       2018-01-27 16:14:41 +08:00
    前排花生瓜子凉茶
    lepig
        8
    lepig  
       2018-01-27 16:17:30 +08:00
    楼主 去搞个 cgo 语言出来
    xuyl
        9
    xuyl  
       2018-01-27 16:29:02 +08:00
    你去用易语言吧。
    sanjusss
        10
    sanjusss  
       2018-01-27 16:44:08 +08:00   ❤️ 1
    上面的都没用过 C#吗? C#的属性名可以是中文的。
    yyfearth
        11
    yyfearth  
       2018-01-27 16:46:58 +08:00 via iPhone
    谁说只能是英文 只要是大写字母就可以吧

    不能中文 但是可以用拼音呀 嘻嘻
    boboliu
        12
    boboliu  
       2018-01-27 16:47:29 +08:00 via Android   ❤️ 1
    @sanjusss 但是不管是 c#还是 go (其实 c 艹也支持 u8 命名的),甚至是 py/js,你敢写中文的话,自己玩还好,公司项目一般要被同事骂,开源项目就是被社区吐槽。易语言习语言另说
    hand515
        13
    hand515  
       2018-01-27 16:50:32 +08:00
    中文编程,切换输入法不累吗
    didi2050
        14
    didi2050  
       2018-01-27 16:55:20 +08:00
    你适合用图形化编程
    southsala
        15
    southsala  
       2018-01-27 16:58:02 +08:00
    楼主之前用易语言玩外挂的吧
    jadeity
        16
    jadeity  
       2018-01-27 17:12:05 +08:00
    楼主重新定义了“坑”?
    we000
        17
    we000  
       2018-01-27 17:18:17 +08:00
    ???
    Kisesy
        18
    Kisesy  
       2018-01-27 17:20:01 +08:00   ❤️ 2
    https://github.com/golang/go/issues/16033 Go2 应该会解决这个问题
    hst001
        19
    hst001  
       2018-01-27 17:45:40 +08:00 via Android
    认真想一下,这确实是一个问题。
    Paddington
        20
    Paddington  
       2018-01-27 18:28:27 +08:00
    我来看看道友怎么说
    hlwjia
        21
    hlwjia  
       2018-01-27 18:48:08 +08:00 via iPhone
    @hand515 别说了,就现在情况也切输入法切死了 真心累

    怀念不用输中文的项目
    az422
        22
    az422  
       2018-01-27 19:07:29 +08:00 via Android
    下一个坑:json 结构体的字段名需要大写才能被解析 /doge
    darluc
        23
    darluc  
       2018-01-27 19:51:08 +08:00
    看来是时候重新发明一下键盘了
    fengh0409
        24
    fengh0409  
       2018-01-27 19:58:48 +08:00
    你转行吧
    1762628386
        25
    1762628386  
       2018-01-27 22:07:06 +08:00
    转行吧
    Mitt
        26
    Mitt  
       2018-01-27 23:02:39 +08:00
    怎么就转行了。。 虽然用中文比较受歧视 但不代表存在没有意义, 连 C++都可以中文为什么 Go 就要例外,而且官方态度也是接受这个提议
    blless
        27
    blless  
       2018-01-27 23:43:21 +08:00 via iPhone
    我当时还特意测试了一下 反正中文变量没啥问题。不能中文都是以前语言对 unicode 不完整留下的坑
    whx20202
        28
    whx20202  
       2018-01-27 23:55:14 +08:00
    我怎么记得 java 也可以中文函数名呢
    muziki
        29
    muziki  
       2018-01-28 00:00:05 +08:00 via iPhone
    建议上面那些让人转行的卫道士去 repo 相关 issue 展示一下强国人士的“强势”嘴脸
    loading
        30
    loading  
       2018-01-28 07:55:13 +08:00 via Android
    建议楼主基于 go 语言创新一些有自主知识产权的 狗语言 出来。
    如果然后对应的是,第一个字母是动物。
    chai2010
        31
    chai2010  
       2018-01-28 08:15:12 +08:00 via iPhone
    一直都可以用中文。只是目前的 Go 规范是以大写 unicode 字母开头的是导出的名字,而中文没有大小写区别。最大的影响是对 json 或数据库字段不好直接用中文。虽然特殊场景略有不变,但也不是什么严重的问题。拿 cplusplus 来论证就没有必要了,因为两者都看不上对方。好在官方也有改动的意愿,期待 2020 年的 Go2 吧
    boboliu
        32
    boboliu  
       2018-01-28 09:32:42 +08:00
    回应一下 append:

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

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

    > 而且有一些比较本土化的项目,很多名词甚至无法使用英文
    这就是很多人用拼音的理由?事实上我还真没见过太多不能用英文的,如果因为几个词而整个代码中英文变量名横行那可就难受了,如果全中文那就更 tm 难受了。
    mengzhuo
        33
    mengzhuo  
       2018-01-28 09:51:43 +08:00 via iPhone
    反正谁敢在我项目组里,用中文变量直接劝退
    lolizeppelin
        34
    lolizeppelin  
       2018-01-28 09:58:33 +08:00 via Android
    用中文补全很麻烦吧?
    Cbdy
        35
    Cbdy  
    OP
       2018-01-28 09:59:09 +08:00 via Android
    @boboliu 我提到注释用中文,变量即可用中文主要是说明中文变量在一些非国际化项目中是可用的

    大多数项目英文 okay,然而确实有的项目英文表达能力是力有未逮的,比如《西游记》背景的游戏,场景人物当然可以翻成英文(参考《 Journey to the west 》),但是维护性就堪忧了
    Cbdy
        36
    Cbdy  
    OP
       2018-01-28 10:03:27 +08:00 via Android
    @lolizeppelin jb 家的 ide 中英文补全是一视同仁的,(将来)甚至可以开发出根据拼音补全中文
    lrz0lrz
        37
    lrz0lrz  
       2018-01-28 10:32:46 +08:00   ❤️ 3
    很好奇 Go 官方都表示支持了,为什么楼上一堆人却冷嘲热讽?
    有没有和用不用是两码事,你不需要可以不用,但别人可能需要。
    XIVN1987
        38
    XIVN1987  
       2018-01-28 10:49:04 +08:00
    所以我觉得,还是下划线起始的标识符 private 这种设定比较好,,Go 现在这个大小写区分感觉不友好
    wzxlovesy
        39
    wzxlovesy  
       2018-01-28 14:45:31 +08:00
    GO 不需要你,你不需要 GO
    rainbowtrash2333
        40
    rainbowtrash2333  
       2018-01-28 14:54:24 +08:00 via Android
    @yyfearth 作为南方人,我宁愿用英语也不用拼音,‘ n ’ ‘ l ’ 分不清啊
    wq67200976
        41
    wq67200976  
       2018-01-28 21:17:43 +08:00
    兄弟你这样会被喷啊
    lolizeppelin
        42
    lolizeppelin  
       2018-01-29 01:38:26 +08:00 via Android
    @Cbdy


    呵呵 中文补全要打几次键盘
    aksoft
        43
    aksoft  
       2018-01-29 09:12:49 +08:00
    我挺你 中文变量名确实有意思。。。
    atcdef
        44
    atcdef  
       2018-01-29 11:26:42 +08:00   ❤️ 2
    从内心来说,我也想用中文变量名,但问题在于 IDE 支持不好,所以输入麻烦,易语言用中文,是因为 IDE 支持得好,可以输入中文首拼实现中文变量名自动上屏。我专门下载了易语言试了,输入中文确实方便。

    所以,现在我还是用的字母做变量名,期待有人搞插件实现中文变量名首拼上屏的功能。
    not4jerk
        45
    not4jerk  
       2018-01-29 12:22:04 +08:00
    我觉得 golang 很坑,不过没有办法. 所以我用算盘写代码,楼主遇到的坑我完美的跳过了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1855 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 16:18 · PVG 00:18 · LAX 08:18 · JFK 11:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.