V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
dhairoot
V2EX  ›  程序员

怎么克服学习 Go 时的恶心感觉,语法太奇怪了

  •  
  •   dhairoot · 2019-10-09 15:21:03 +08:00 · 32804 次点击
    这是一个创建于 1902 天前的主题,其中的信息可能已经有所发展或是发生改变。

    用大家都熟悉的规则设计语法多好,为什么非要高一些乱七八糟的语法.

    278 条回复    2024-08-27 17:21:54 +08:00
    1  2  3  
    zjyl1994
        101
    zjyl1994  
       2019-10-09 17:49:31 +08:00   ❤️ 5
    慢慢用就习惯啦,Go 还算好用。我倒是觉得 java 之类的很难用,我宁可去写 c++也不想碰什么鬼 java
    GPIO
        102
    GPIO  
       2019-10-09 17:49:35 +08:00
    @ChristopherWu
    变量那个我是指简短声明,var 因式分解声明这种,不是驼峰。
    我一开始就踩了个坑,简短声明一个新局部变量时不能同时赋值全局变量。
    wangxiaoaer
        103
    wangxiaoaer  
       2019-10-09 17:51:13 +08:00 via Android   ❤️ 2
    @imzxk go 的写法让我感觉像个小孩子路都走不稳,php 的$让我痛不欲生。
    shuizhengqi
        104
    shuizhengqi  
       2019-10-09 17:51:49 +08:00
    因为支持 go 的人还支持 hk 分裂,所以你会觉得恶心
    janxin
        105
    janxin  
       2019-10-09 17:52:05 +08:00
    @ChristopherWu 暗示只有三个黑点
    tt67wq
        106
    tt67wq  
       2019-10-09 17:52:07 +08:00
    @ChristopherWu elixir 元编程美如画,写了之后都不想碰公司的 go 代码
    forrestshuang
        107
    forrestshuang  
       2019-10-09 17:54:01 +08:00   ❤️ 2
    if err != nil 太他吗的恶心了。 如果不是 云原生都需要用这个,我才不学 golang
    ChristopherWu
        108
    ChristopherWu  
       2019-10-09 17:55:17 +08:00   ❤️ 2
    @tt67wq #106 +1,望着一大堆 switch,case,if,err,我天天日了狗
    ChristopherWu
        109
    ChristopherWu  
       2019-10-09 17:55:58 +08:00   ❤️ 1
    @tt67wq #106 还有哦,写代码只要 5 分钟,想想怎么样重构花半小时,再发现没有泛型怎么做都做不好再 ri 一遍。。
    ChristopherWu
        110
    ChristopherWu  
       2019-10-09 17:57:32 +08:00
    @shuizhengqi #104
    》因为支持 go 的人还支持 hk 分裂,所以你会觉得恶心

    愿中国 gopher 都摆脱冷气,只是向上走,不必听自暴自弃者流的话。

    能提 pr、issue 的提 pr、issue,能黑的有理有据黑。

    有一分热,发一分光,就令萤火一般,也可以在黑暗里发一点光,不必等候炬火。

    此后如竟没有炬火:我便是唯一的光。
    tt67wq
        111
    tt67wq  
       2019-10-09 17:57:40 +08:00
    @ChristopherWu 我已经放弃重构了,准备用 elixir 另起炉灶
    charlie21
        112
    charlie21  
       2019-10-09 17:58:12 +08:00
    本质上是一个人不具备屏蔽各个编程语言语法差异的能力 。没治了。怎么别人就能屏蔽各个编程语言语法差异、拿起来就用呢?
    Rasphino
        113
    Rasphino  
       2019-10-09 17:59:06 +08:00
    你不懂大道至简(逃
    ChristopherWu
        114
    ChristopherWu  
       2019-10-09 18:00:58 +08:00
    @charlie21 #112 你说,给你汇编语言,你能够屏蔽吗?给你 scheme,你能够屏蔽吗? 编程语言在本来就是有巨大差异
    ChristopherWu
        115
    ChristopherWu  
       2019-10-09 18:01:17 +08:00
    @tt67wq #111 那起码你还可以选啊 - = -
    chuhemiao
        116
    chuhemiao  
       2019-10-09 18:02:10 +08:00
    明晚 go 夜读有微服务直播,看了会不会出事,瑟瑟发抖
    charlie21
        117
    charlie21  
       2019-10-09 18:02:11 +08:00
    精通两种或两种以上的乐器是一种什么体验?
    https://www.zhihu.com/question/294602444
    有人可能精通十几种乐器吗?
    https://www.zhihu.com/question/330310319
    会演奏多种乐器是一番什么样的体验?
    https://www.zhihu.com/question/27322494

    说白了,那就是 对自我的要求太低了的程序员占所有 Java 程序员 的比重是极大的。建议考虑自己的圈子是不是有问题
    geekfoxmedia
        118
    geekfoxmedia  
       2019-10-09 18:03:20 +08:00
    @shuizhengqi
    go 红##卫兵兼任反 tg 小斗士才能说出如此神论
    None123
        119
    None123  
       2019-10-09 18:04:11 +08:00
    go 的包管理是真恶心
    jowan
        120
    jowan  
       2019-10-09 18:04:44 +08:00   ❤️ 5
    我发现在 v 站不管什么话题 都能扯到 敏感的政治问题 然后就开始歪楼 甚至演变成攻击 我真是服了
    dhairoot
        121
    dhairoot  
    OP
       2019-10-09 18:06:09 +08:00   ❤️ 1
    @jowan 很是无语,我就去吃个饭回来就变成这样了
    anonymous256
        122
    anonymous256  
       2019-10-09 18:07:53 +08:00
    @ChristopherWu #89 不知道你在哪看出我黑 golang 了?
    事实上, 我每天都在写 golang, 写 go 的时间远比写 C/C++多. 但它语法的不优雅的地方就是不优雅的地方.

    ps: 你这种人真的恶心, 我说自己的观点, 就给人戴上黑粉的帽子.
    eric
        123
    eric  
       2019-10-09 18:09:01 +08:00
    我还是见到有人说 Java 优雅的,看来是在下孤陋寡闻了。
    anonymous256
        124
    anonymous256  
       2019-10-09 18:11:17 +08:00
    @ChristopherWu #92 哦, "正好最近在学 Go" , 我知道了, 才入门就要指点江山了吗?
    anonymous256
        125
    anonymous256  
       2019-10-09 18:11:48 +08:00
    @jowan #120, 那种弟弟, 拉黑就完事了.
    ChristopherWu
        126
    ChristopherWu  
       2019-10-09 18:11:50 +08:00
    @anonymous256 为什么你觉得黑就是扣帽子呢。。你看我的言论,我是不是比你黑的更厉害呢。。

    请看: https://blog.golang.org/gos-declaration-syntax
    huiyifyj
        127
    huiyifyj  
       2019-10-09 18:12:53 +08:00
    相比而言,感觉 go 的包管理更恶心人。
    tabris17
        128
    tabris17  
       2019-10-09 18:13:12 +08:00
    准备一个呕吐袋
    ChristopherWu
        129
    ChristopherWu  
       2019-10-09 18:13:57 +08:00   ❤️ 1
    @anonymous256 #122 在你看来,go 黑可能是贬义词,在我看来是褒义词,就是这样。
    ChristopherWu
        130
    ChristopherWu  
       2019-10-09 18:15:02 +08:00
    @anonymous256 #124 还有哦。。。“正好最近在学 go”是我引用别人的评论。
    ClericPy
        131
    ClericPy  
       2019-10-09 18:25:02 +08:00
    很多不习惯的地方只能靠肌肉记忆来改善了

    我还不喜欢写字呢, 不也是忍着来了

    话说这帖子到底怎么火起来的
    ChristopherWu
        132
    ChristopherWu  
       2019-10-09 18:25:56 +08:00
    @ClericPy #131 自古以来,语言 /编辑器之争。。。。
    janus77
        133
    janus77  
       2019-10-09 18:32:42 +08:00 via iPhone
    @icexin 我感觉这个问题可以在编译层自动解决的,没必要在编写层就给 error 吧……
    ChristopherWu
        134
    ChristopherWu  
       2019-10-09 18:33:36 +08:00
    @janus77 #133 你 import 那么多没用的包也不好看啊。。。这个站不住脚
    kzzhr
        135
    kzzhr  
       2019-10-09 18:45:51 +08:00 via iPhone
    不要生气,这个真属于 少见多怪。。
    LiJie
        136
    LiJie  
       2019-10-09 18:59:04 +08:00
    我自己有些先入为主的感觉,大学学习的 c++,只能习惯 c++的语法习惯,其余都是强忍着。高中自己学习的 vb,感觉也不错,当时是 vb6 记得。
    cominghome
        137
    cominghome  
       2019-10-09 19:03:20 +08:00
    没写过 GO,先学的 python 后来学 Lua,我觉得大概是你还没适应吧,我刚写 Lua 的时候也是各种语法不熟悉,学了快一星期了还得对着手册找语法...
    shuizhengqi
        138
    shuizhengqi  
       2019-10-09 19:03:30 +08:00
    @geekfoxmedia 嗯,怎么了?不是倡导言论自由么?怎么我说个话,都能引起你高潮呢?
    n329291362
        139
    n329291362  
       2019-10-09 19:08:14 +08:00
    emmm 首先克服自己的傲慢吧
    falcon05
        140
    falcon05  
       2019-10-09 19:10:25 +08:00 via iPhone   ❤️ 2
    没想到这种主题都能往“水深火热”节点前进😂
    CuChulainn
        141
    CuChulainn  
       2019-10-09 19:19:05 +08:00
    写会儿 kotlin
    barnetime
        142
    barnetime  
       2019-10-09 19:21:36 +08:00
    写 java 也很恶心,然后去写 scala,更畸形……
    iffi
        143
    iffi  
       2019-10-09 19:25:56 +08:00 via iPhone
    试试 Groovy
    Leigg
        144
    Leigg  
       2019-10-09 19:29:25 +08:00 via Android
    静态语言切换就容易有这种感觉,你是被 java 先入为主了
    blessyou
        145
    blessyou  
       2019-10-09 19:30:01 +08:00 via Android
    写会 js
    sudodo
        146
    sudodo  
       2019-10-09 19:38:39 +08:00
    恶心过两周,就体会到它的爽了。除了异常处理,感觉好简洁,有点写 Lua 的快感
    realpg
        147
    realpg  
       2019-10-09 19:40:04 +08:00   ❤️ 1
    只觉得异常处理机制不太优雅
    其他都很不错

    喷的大多只是沉迷于自己之前熟悉的世界不愿意出来
    cabing
        148
    cabing  
       2019-10-09 21:04:12 +08:00
    多学会几种语言写完各种项目之后就会觉得 go 真香。

    特别是微服务的时代。
    arraysnow
        149
    arraysnow  
       2019-10-09 21:10:21 +08:00
    @shuizhengqi 支持 js/java/php/c#/python···英语 /德语 /法语 /粤语 /闽南语的人还支持 hk 分裂,所以你会觉得恶心(逃
    tourist2018
        150
    tourist2018  
       2019-10-09 21:12:39 +08:00
    golang 我觉得语法方面还行啊 没什么可吐槽的 习惯就行了

    golang 最恶心的是不支持泛型已经垃圾的一批的包管理工具( go1.11 引入 go mod 好了点) 之前真的痛不欲生
    felixcode
        151
    felixcode  
       2019-10-09 21:21:46 +08:00 via Android
    有这种感觉大概就是思维固化了,觉得语法就应该怎么着,其实谁也没规定语法该怎样,更不用说非得接近 C/Java/python 了,还是试着接受新事物吧
    w3cll
        152
    w3cll  
       2019-10-09 21:43:35 +08:00
    go 的包管理真的很辣鸡 搞不懂一个包和项目目录居然是同级的。。。。很奇葩的目录结构
    HiShan
        153
    HiShan  
       2019-10-09 21:53:49 +08:00
    @eric 请问 Java 不优雅体现在哪些方面呢?
    polebug
        154
    polebug  
       2019-10-09 22:39:36 +08:00
    楼主怕不是没写过 c/c++
    java 相比较起来 恶心多了
    ming7435
        155
    ming7435  
       2019-10-09 23:01:14 +08:00
    我以为就我一个人接受不了 go 的语法
    zooey2021
        156
    zooey2021  
       2019-10-09 23:06:27 +08:00 via iPhone
    1. 变量声明的顺序, C/C++风格, 先类型,后变量名, go 是反的.
    2. go 的花括号强制从行末开始, 并且不能换行.

    就这 2 点, 我也觉得 go 的语法反人类的.

    +1 !
    不否认 go 的成功,多年 c 和 python 程序猿对写 go 代码始终提不起兴趣来,感觉 go 的语法用起来确实有点不舒服。
    chinvo
        157
    chinvo  
       2019-10-09 23:07:53 +08:00
    来学 .Net 和 rust
    SPACELAN
        158
    SPACELAN  
       2019-10-09 23:09:07 +08:00
    真香
    creedowl
        159
    creedowl  
       2019-10-09 23:15:12 +08:00 via Android   ❤️ 2
    看了楼主的回复和互动都是在吐槽 go 而不是讨论,既然只是为了找认同,那这个帖子还有什么存在的必要吗?不喜欢就用脚投票,出来污染社区环境有什么意义吗
    hyrepo
        160
    hyrepo  
       2019-10-09 23:22:20 +08:00 via iPhone   ❤️ 1
    这个帖子让我对“网络从来不是一个讨论事情的好地方”的说法有了更多理解
    walleL
        161
    walleL  
       2019-10-10 00:25:01 +08:00   ❤️ 2
    https://blog.golang.org/gos-declaration-syntax

    go 官方有解释为什么变量声明时类型要写到后面。
    我当年学 C 时就觉得类型在前的设计很多时候表意不明,看了官方解释还挺认同的
    pkwenda
        162
    pkwenda  
       2019-10-10 00:54:55 +08:00
    @chuhemiao 在哪看,走一波
    melkor
        163
    melkor  
       2019-10-10 01:40:57 +08:00 via Android
    楼主学的第一个编程语言如果是 Pascal 恐怕就不会发出这样的疑问了。每个人有不同的学习历程,不是你不习惯就是恶心和奇怪。
    laike9m
        164
    laike9m  
       2019-10-10 03:56:14 +08:00 via Android
    @wysnylc 只要你想,Python 也是可以写成 Java 风格的。。
    mscb
        165
    mscb  
       2019-10-10 07:48:32 +08:00 via Android
    恰恰相反,我完全接受不了 Java,每次写 Java 久一点都感到恶心,哈哈哈。可能确实是一开始建立的思维不同。go 我觉得语法还算好,多写写应该能适应的
    v2orz
        166
    v2orz  
       2019-10-10 08:18:21 +08:00
    我个人的痛点是无数的 if err
    以及 panic
    然后是调试的时候无效的 import
    ww2000e
        167
    ww2000e  
       2019-10-10 08:23:57 +08:00
    跑起来后那种顺畅感相反
    missdeer
        168
    missdeer  
       2019-10-10 08:36:50 +08:00   ❤️ 1
    遵从自己内心的喜好,连学个语言都不能选个自己喜欢的来,人活着还有什么意思
    比如我觉得 Python 空格缩进不能忍,所以我至今不会写 Python 代码,我觉得 Rust 的语法符号滥用,不直观,违反直觉,所以至今不会写 Rust 代码。。。
    bakabie
        169
    bakabie  
       2019-10-10 08:44:24 +08:00 via Android   ❤️ 1
    怎么克服学习 Java 时的恶心感觉,语法太奇怪了,为什么要设计这么恶心的语法 doge
    dbskcnc
        170
    dbskcnc  
       2019-10-10 09:00:45 +08:00 via Android
    无知的傲慢, 这世界不是为恭维某个人而存在的
    Sasasu
        171
    Sasasu  
       2019-10-10 09:01:44 +08:00 via Android
    变量转 interface 时会隐式引入指针
    函数调用时变成指针会造成变量逃逸,分配到堆上
    栈上的变量只能被栈上的指针指向

    这不是说 go 的逃逸分析很烂,是在说 go 羸弱的类型系统没法支撑 void* 这样的零开销抽象

    go 完全无视了现代 pl 界的研究成果,一群写 c 的造了一个自己认为比 c 好的语言。
    接触过现代语言的自然会感到不舒服。
    BOYPT
        172
    BOYPT  
       2019-10-10 09:02:13 +08:00
    世上无难事,只要肯放弃!
    dog82
        173
    dog82  
       2019-10-10 09:03:10 +08:00
    go 语言的作者有很重的 unix 情节,go 的高并发和速度快是特点,语法的某些地方真的很拗
    laravel
        174
    laravel  
       2019-10-10 09:05:37 +08:00
    go 的语法不奇怪,你学下 kotlin、swift、oc 或者 erlang
    Foreverdxa
        175
    Foreverdxa  
       2019-10-10 09:07:19 +08:00
    我感觉挺简单的。。。几天就把全部的基础过了一遍。。
    ytll21
        176
    ytll21  
       2019-10-10 09:12:13 +08:00
    对我来说,go 最大的问题是,太简单了,和 rust 一比较,我愉快的跑去用 rust 了
    zy445566
        177
    zy445566  
       2019-10-10 09:15:24 +08:00
    放弃吧,和 NBA 一样,Go 创始人也对中国有敌意。
    keep china heart
    jss
        178
    jss  
       2019-10-10 09:15:32 +08:00
    你行 你上...
    p1gd0g
        179
    p1gd0g  
       2019-10-10 09:27:48 +08:00
    语法和格式化是两码事吧。
    fyxtc
        180
    fyxtc  
       2019-10-10 09:31:25 +08:00
    不要纠结语言问题。。。。工作上需求驱动,业务上爱好驱动
    fyxtc
        181
    fyxtc  
       2019-10-10 09:31:41 +08:00
    @fyxtc 业务=》业余
    Ravenddd
        182
    Ravenddd  
       2019-10-10 09:33:01 +08:00
    我写惯了 java, 写 python 也有点不习惯, 适应一下就好了
    hengguao
        183
    hengguao  
       2019-10-10 09:35:23 +08:00
    这里大多数不都是有头有脑的程序猿吗?怎么评论跟微博、头条似的,感觉不带脑子,只有逼乎才能理性讨论吗?
    @zy445566 另外,这个大佬说的这个不至于,同一个事不同维度看,抵制 NBA,可以让某国赚不到钱,抵制 GO 的话,不清楚对某国有没有损失,但对我们的话,何不拿起敌人的武器就是干他
    exploreXin
        184
    exploreXin  
       2019-10-10 09:39:27 +08:00   ❤️ 1
    圈子不同,不必强融,编程语言本质上是编程哲学的具象化,你觉得有必要有分号的地方,有的语言就是觉得没必要,有分号违反哪条法律规定吗?但有的语言就是强制不允许有分号,管中规豹的看问题,你会发现,每一种编程语言都是语言的核心开发者对编程世界运作方式的哲学规划,底层早已经规定了最基本的思想限制,go 语言觉得理解不了,只能说明圈子不同,领域不同,思维方式不同,汝之蜜糖彼之砒霜,就是这样的。

    要强调一下,不是你的圈子容不下自己膈应的编程语言,而是编程语言容不下你,毕竟 go 的社区有千千万万的开发者,是人家的圈子容不下不适合他们哲学的人罢了,对于此,要么试着感受他们的哲学,要么离开,划清界限。
    dajj
        186
    dajj  
       2019-10-10 09:53:31 +08:00
    改变下思维,你是用它挣钱的, 挣钱的事,能愉快吗。
    zhuangzhuang1988
        187
    zhuangzhuang1988  
       2019-10-10 09:53:33 +08:00
    那就换个语言,多简单的事情
    geew
        188
    geew  
       2019-10-10 10:27:28 +08:00
    @None123 #119 go mod 了解一下
    geew
        189
    geew  
       2019-10-10 10:27:54 +08:00
    @huiyifyj #127 go mod 了解一下
    ben1024
        190
    ben1024  
       2019-10-10 10:28:37 +08:00
    Go 语法的确很难习惯,语言很多换个喜欢的语法语言
    linsijia1002
        191
    linsijia1002  
       2019-10-10 10:39:01 +08:00
    @janus77 没有用的包还要 import 进去干嘛??? 非要增加内存消耗吗?
    barbery
        192
    barbery  
       2019-10-10 11:08:55 +08:00
    这都值得发个贴???克服个毛,语言那么多赶紧换一个
    meepo3927
        193
    meepo3927  
       2019-10-10 11:30:31 +08:00
    欢迎来 JavaScript
    wangxiaoaer
        194
    wangxiaoaer  
       2019-10-10 11:53:41 +08:00
    @linsijia1002 #191 编译的时候不能去掉吗?调试期间某些代码临时注释导致的某些包暂时没有用到,必须要清除,然后反复这个过程,你试过有多恶心吗?
    ke1e
        195
    ke1e  
       2019-10-10 11:56:59 +08:00 via Android
    目前用 go mod 没什么不适呀,不知道哪里恶心
    wowiwj
        196
    wowiwj  
       2019-10-10 12:21:49 +08:00 via iPhone   ❤️ 1
    9012 年都结束了,还是不断的重复 if err != nil,果然人类的本质就是复读机啊,还有泛型,你倒是上啊,吹了大半年了还是看不到任何结果,改变不了别人还是改变自己,我不用还不行么……,自从用了 rust,感觉是真的香。满足我所有的期待(゚ω゚)
    vipcc
        197
    vipcc  
       2019-10-10 12:29:45 +08:00 via Android   ❤️ 1
    C#是我用过语法最优雅的,其次是 typescript。
    C++和 js 是我用过坑最多的语言,
    每个语言都有自己的特点,喜欢什么工具用什么
    cumt21g
        198
    cumt21g  
       2019-10-10 12:41:44 +08:00
    rust 试下
    encro
        199
    encro  
       2019-10-10 12:48:49 +08:00
    人生苦短,快学 GOLANG。

    1,一次开发,到处使用。( windows,linux,arm )
    2, 上手快(简单)
    3,性能好(协程)
    4,社区开源产品丰富( package 数目,GIT 开源项目数目上,除了 npm,pip,go 应该快赶上 composer 了)
    zhuangzhuang1988
        200
    zhuangzhuang1988  
       2019-10-10 13:20:21 +08:00
    @wangxiaoaer 严重同意, if err 这个相对还好一点.
    1  2  3  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5183 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 55ms · UTC 09:37 · PVG 17:37 · LAX 01:37 · JFK 04:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.