golang 是目前为止用过的最难受的语言 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
k9982874
V2EX    分享发现

golang 是目前为止用过的最难受的语言

  •  
  •   k9982874 2017-11-22 13:59:32 +08:00 54521 次点击
    这是一个创建于 2880 天前的主题,其中的信息可能已经有所发展或是发生改变。

    没三目运算

    没泛型,别说 interface}算泛型

    没函数重载

    没 template

    要啥没啥

    变量类型说静态不静态,说动态不动态

    没有杀手级的框架,写个 web 服务都要难受死

    我圆润的滚回 PHP 了

    第 1 条附言    2017-11-22 15:16:10 +08:00
    对了,还有函数参数不支持预设默认值。。。
    126 条回复    2020-07-01 21:26:01 +08:00
    1  2  
    glues
        1
    glues  
       2017-11-22 14:02:30 +08:00   8
    基本都黑到点了
    feiyuanqiu
        2
    feiyuanqiu  
       2017-11-22 14:08:41 +08:00 via Android   11
    php 有这些?
    onlyhot
        3
    onlyhot  
       2017-11-22 14:09:32 +08:00 via iPhone
    @feiyuanqiu 哈哈
    hjc4869
        4
    hjc4869  
       2017-11-22 14:10:05 +08:00 via iPhone
    看着都难受
    yoa1q7y
        5
    yoa1q7y  
       2017-11-22 14:10:31 +08:00
    前排啤酒瓜子花生米
    cuebyte
        6
    cuebyte  
       2017-11-22 14:12:36 +08:00
    黑到一些了,但 PHP 不比 go 好啊
    clino
        7
    clino  
       2017-11-22 14:13:07 +08:00
    "没 template"
    虽然我没用过 go,不过真没 template?
    takanasi
        8
    takanasi  
       2017-11-22 14:13:17 +08:00 via Android   2
    最臭名昭著的错误处理没说
    40huo
        9
    40huo  
       2017-11-22 14:15:21 +08:00
    前排
    Bigglesworth
        10
    Bigglesworth  
       2017-11-22 14:17:23 +08:00 via Android
    挤一挤,让我过去。
    dy7338
        11
    dy7338  
       2017-11-22 14:19:12 +08:00   1
    php 是全世界最好的语言
    isCyan
        12
    isCyan  
       2017-11-22 14:19:31 +08:00 via Android
    当然不能和 php 比,php 真是好用
    golang 适合搞一些小工具之类的,或者 api
    k9982874
        13
    k9982874  
    OP
       2017-11-22 14:29:59 +08:00
    @clino 咱俩应该说的不是一个 template

    @feiyuanqiu 没有,因为不需要

    @cuebyte 除了代码安全,没见那不好。如果说运行速度,python 都没说话。
    sorra
        14
    sorra  
       2017-11-22 14:37:15 +08:00
    @clino Go 是没 template 啊,所以有第三方项目在探索 t/377298
    mkeith
        15
    mkeith  
       2017-11-22 14:39:57 +08:00
    最后 PHP 躺枪
    cuebyte
        16
    cuebyte  
       2017-11-22 14:40:09 +08:00
    @k9982874 仁者仁,PHP 於我:真值判直吃屎;量要$符,反人; array 使用不一,有方括也有函建,而且 map 混用;置函一大堆,且命名缺乏性。
    nullen
        17
    nullen  
       2017-11-22 14:42:34 +08:00   4
    没喷到点子上,入手一门语言切勿把其他语言带给你的观念给代入进去。
    wph95
        18
    wph95  
       2017-11-22 14:49:40 +08:00
    clino
        19
    clino  
       2017-11-22 14:55:42 +08:00
    @sorra #14 明白了,原来说的是泛形,我一看是 php 在做对比就想成了 web 的模板.
    SuperMild
        20
    SuperMild  
       2017-11-22 14:56:59 +08:00
    新语言肯定要和现有语言有很大区别才值得被创造和推广,Golang 最大的两个优点是语言特性少超快上手、和闪电般的编译速度,而这两大优点的代价之一就是暂时没有泛型。

    什么叫做“说静态不静态,说动态不动态”,Golang 绝对是静态类型,连这点你都搞不清楚吗?

    说框架和生态,不说语言的年龄不公平,Golang 的生态发展速度可以说是“惊人”的快。Go 1.0 是 2012 年发布的,同期的新语言,哪个的生态敢说比 Golang 好?
    Hellert
        21
    Hellert  
       2017-11-22 14:57:58 +08:00   9
    Go 语言的定位是系统语言,部分替代 C,要说友好性和 C 比才恰当。
    总拿 Go 和 Php, Python 这样的动态语言比较,是几个意思啊
    TangMonk
        22
    TangMonk  
       2017-11-22 15:00:55 +08:00
    我觉得挺好用的,我主要用来写底层的协议,没写 Web
    SuperMild
        23
    SuperMild  
       2017-11-22 15:02:06 +08:00   2
    语言特性本身要啥没啥,这是 Golang 的特点(说缺点可以,说优点也行),要啥有啥的语言又不是没有,C++就是,Golang 没必要重新发明 C++,不同的语言有不同的特点和适用场景。
    qleroooo
        24
    qleroooo  
       2017-11-22 15:10:15 +08:00
    web 框架有 beego,虽然不怎么样,不过要用框架用 java 啊
    k9982874
        25
    k9982874  
    OP
       2017-11-22 15:15:25 +08:00
    @SuperMild
    大牛,先把我前面说的理解了,自然就理解我为什么说 golang 变量类型说静态不静态,说动态不动态了。

    优点在哪?除了增加代码行数真没看出来
    skadi
        26
    skadi  
       2017-11-22 15:16:29 +08:00   1
    我一个 cpp 的使用者跑去写 golang。那才叫一个难受呢。
    不仅你提到的这些,还有语法以及好多黑膜法都用不了。
    2ME
        27
    2ME  
       2017-11-22 15:25:11 +08:00
    16 楼函数和语言结构都没搞清楚 低端黑
    boboliu
        28
    boboliu  
       2017-11-22 15:28:08 +08:00 via Android   1
    rust 不服我跟你讲
    prolic
        29
    prolic  
       2017-11-22 15:38:00 +08:00
    感觉随便写个语句就要开花括号,特别烦
    k9982874
        30
    k9982874  
    OP
       2017-11-22 15:43:28 +08:00
    @skadi 哈哈,我也写了好多年 C/C++,写 GO 的时候的感觉说不上来。感觉以前积累多年的套路一下全废了(摊手

    @boboliu 我认输,没写过 rust
    daizongxyz
        31
    daizongxyz  
       2017-11-22 15:52:29 +08:00
    写了三四年 golang,突然来写 C++,各种不习惯,由简入翻好难适应。
    recall704
        32
    recall704  
       2017-11-22 16:02:52 +08:00
    写了好几个月了,还行。

    只是刚开始的时候老用 python 的思想写代码。
    aksoft
        33
    aksoft  
       2017-11-22 16:06:39 +08:00
    开始确实难受,不过一门语言和另一门的功能都有了,还有另一门的特性 优点。。那另一门直接去吃屎了
    sensui7
        34
    sensui7  
       2017-11-22 16:12:02 +08:00
    还有一条, 包管理, 太敷衍了. 只能说比 include 头文件好用,
    MushishiXian
        35
    MushishiXian  
       2017-11-22 16:29:42 +08:00
    写起来是有点难受的...interface 用得不好的话各种蛋疼..
    timothyye
        36
    timothyye  
       2017-11-22 16:46:03 +08:00
    看明白了,原来是黑 PHP 的
    yuchenyang1994
        37
    yuchenyang1994  
       2017-11-22 16:47:05 +08:00   4
    刚开始用 go 的时候,也感觉是这样,tmd,要啥没啥,各种好用的魔法根本就没有,if err!=nil 写的我手疼,不禁大骂,什么玩意儿啊.......真的是垃圾....直到。。。
    我正在改写一个东西,拿到的库不能满足我的需求,然后我去看他的源码,黑魔法少,关键字少,看着流畅且不费力,分分钟把库改成我想要的东西。也许程序员并不需要那么多特性,人民不需要自由。。。
    looplj
        38
    looplj  
       2017-11-22 17:01:15 +08:00
    是黑点,在工程中,这些都不是真正的痛点。
    albertofwb
        39
    albertofwb  
       2017-11-22 17:40:36 +08:00 via Android
    @TangMonk 正在学习中,感觉底层撸起来还是蛮舒服的
    albertofwb
        40
    albertofwb  
       2017-11-22 17:42:46 +08:00 via Android
    @yuchenyang1994 为解决问题而生……哈
    webjin1
        41
    webjin1  
       2017-11-22 17:43:27 +08:00
    用 D 语言吧。
    GG668v26Fd55CP5W
        42
    GG668v26Fd55CP5W  
       2017-11-22 17:55:29 +08:00 via iPhone
    哈哈,才学了几天我也发现了,go 就是一门任性的语言,爱用用不用滚→_→

    我选择坚持.
    est
        43
    est  
       2017-11-22 17:55:40 +08:00
    就是带 gc 的 C 语言。
    jiangzhuo
        44
    jiangzhuo  
       2017-11-22 18:02:50 +08:00
    Dart 欢迎你
    gouchaoer
        45
    gouchaoer  
       2017-11-22 18:10:11 +08:00 via Android   1
    go 有 2 个优点,第一是协程带来的 io 高性能,第二是直接编译成二进制无依赖,就这两个就够了。。。至于写业务,php 可以很快很快
    iappled
        46
    iappled  
       2017-11-22 18:12:49 +08:00
    但是简单,工程化啊
    fuxiaohei
        47
    fuxiaohei  
       2017-11-22 18:30:17 +08:00
    会用动态的感觉,肯定是滥用空接口,反而写的折腾。
    Tink
        48
    Tink  
    PRO
       2017-11-22 18:44:25 +08:00 via iPhone
    主要是能编译二进制
    mritd
        49
    mritd  
       2017-11-22 18:46:43 +08:00 via iPhone
    @falcon05 抽屉伙伴?
    strahe
        50
    strahe  
       2017-11-22 18:49:11 +08:00
    没觉得难受, 相反觉得写起来很舒服,
    guoziyan
        51
    guoziyan  
       2017-11-22 18:50:53 +08:00
    滚回宇宙最好的语言吧 [手动 dog]
    21
        52
    21  
       2017-11-22 20:38:01 +08:00
    Golang 可以看做 C 语言的填坑加强版
    wevsty
        53
    wevsty  
       2017-11-22 21:09:02 +08:00   1
    看到列的这几条,我只想说,你确定你要的不是 cpp ?
    littleshy
        54
    littleshy  
       2017-11-22 22:24:39 +08:00
    这也是让我一个写 C#的转了两次都放弃的原因。
    后来一想,其实我并不需要呀,C#、Python 用着就很爽了啊。
    leitwolf
        55
    leitwolf  
       2017-11-22 22:25:08 +08:00
    就喜欢它的特性少,每个人的写法都差不多。
    还有就是直接生成二进制不用配置什么依赖环境。
    missdeer
        56
    missdeer  
       2017-11-22 23:01:13 +08:00 via Android
    你需要的是 cpp
    jowuIM
        58
    jowuIM  
       2017-11-22 23:21:56 +08:00
    ....我也使用 go 来学习系列比较底层的协议的,说实话 web 开发我还是习惯用 Java,只有写 typescript 的时候很有写 go 的感觉
    stabc
        59
    stabc  
       2017-11-22 23:24:19 +08:00
    @yuchenyang1994 代码可读性也许跟程序员的关系更大呢?
    asen1987
        60
    asen1987  
       2017-11-22 23:35:34 +08:00   11
    abcbuzhiming
        61
    abcbuzhiming  
       2017-11-22 23:50:15 +08:00
    golang 非常适合写底层的小工具,写大玩意我个人觉得这东西和 node.js 一样,生态圈不够成熟
    scnace
        62
    scnace  
       2017-11-22 23:56:08 +08:00 via Android
    PHP:这都能黑我?
    ddou
        63
    ddou  
       2017-11-22 23:56:30 +08:00 via iPhone
    为什么要给自己过不去用 go 写 web 服务? java,c#,ruby,python,nodejs,随便挑个框架都能很 6 的写 web 服务。好钢还是要到刀刃上!
    scnace
        64
    scnace  
       2017-11-22 23:57:16 +08:00 via Android
    还有人家叫 Go …
    leyle
        65
    leyle  
       2017-11-23 00:40:17 +08:00
    遇到那种直接在数据库里面写程序的,他们定义的结构,那叫圆环套圆环,套了一层又一层,按他们的结构给他们传数据时,才叫恶心。
    Technetiumer
        66
    Technetiumer  
       2017-11-23 01:05:39 +08:00 via Android
    @scnace Go 有人了 於是 Google 的 Go 就 Golang
    Sliverburger
        67
    Sliverburger  
       2017-11-23 03:55:05 +08:00
    不熟和难用不一样

    Go 我用 200 行写出一个类似 ip.cn 的网站,PHP 需要多少?随便 Github 上看了个类似网站的文件,吓一跳 mmornati/myip/blob/master/index.php

    Go 的网站我可以直接 go run website.go 几乎什么都不需要,PHP 不要 Apache 或者 PHP-FPM 能行?

    各有个的好处,Go 也不是说上来就让你做网站用的。
    lrxiao
        68
    lrxiao  
       2017-11-23 06:21:12 +08:00
    大括号不能换行(滑稽)
    lrxiao
        69
    lrxiao  
       2017-11-23 06:22:03 +08:00
    不过你说的这些全是坑(
    看看函数重载 /模板 C/C++标准写了多长?
    siteshen
        71
    siteshen  
       2017-11-23 07:31:56 +08:00
    说得很对,这些楼主想要的几乎都没有,(除了 go 明确是支持自动推导的静态类型)。

    另外 template ( c++)和范型( java?-不很清楚这块),函数默认值( python )和函数重载( c++/java )都能解决同样的问题,有一个就可以了。(当然了 go 都没有……)
    skadi
        72
    skadi  
       2017-11-23 08:59:47 +08:00
    @siteshen 然后 interface 里面啥都装了
    Clarencep
        73
    Clarencep  
       2017-11-23 09:00:34 +08:00
    确实写起来没有世界上最好的语言 -- PHP 好。

    但是,不得不说两句:

    “没泛型,别说 interface{}算泛型” -- PHP 好像也没有泛型呀,话说都是 duck type 的,要泛型干啥

    “没函数重载” -- 哎,说得跟 PHP 有重载一样

    “变量类型说静态不静态,说动态不动态” -- golang 明显是静态类型,只是类型推断系统很牛 x

    “没有杀手级的框架,写个 web 服务都要难受死” -- 不评价,反正我用内置的 http 感觉挺好,挺稳定的
    GreatHumorist
        74
    GreatHumorist  
       2017-11-23 09:04:01 +08:00
    @Sliverburger 建议不清楚不要乱黑
    Yuansir
        75
    Yuansir  
       2017-11-23 09:08:06 +08:00
    又黑 PHP
    zjqzxc
        76
    zjqzxc  
       2017-11-23 09:12:37 +08:00
    @Sliverburger #67 php 能活到今天就是因为其在 web 领域的开发效率

    用 go 来黑 php 的 web 开发效率?????
    k9982874
        77
    k9982874  
    OP
       2017-11-23 09:28:24 +08:00
    @siteshen
    “变量类型说静态不静态,说动态不动态”这句话说的有问题。
    应该要表达变量类型推导这么 NB,为啥没有静态语言的特性(泛型,多态)
    然而也没有动态语言的语法糖。

    @Clarencep
    没错 PHP 和其它动态语言也没有这些东西,是在语言设计时已经规避了问题或者提供了其它方案。


    @Sliverburger
    我相信 GO 可以 200 行写一个 ip.cn ,甚至你说 200 行写个 facebook 我也信,这是框架或者库提供的便利与语言本身无关。

    lumen 框架支持『 php -S localhost:8000 -t public 』启动一个 Server。同样这不是语言层提供的优势,只是看框架是否愿意支持而已。
    jxl
        78
    jxl  
       2017-11-23 09:30:14 +08:00
    go 去你的 爱用不用
    zjqzxc
        79
    zjqzxc  
       2017-11-23 09:47:38 +08:00
    @k9982874 php -s 不是框架的,是 php 自己带的
    http://php.net/manual/zh/features.commandline.webserver.php
    zyh94946
        80
    zyh94946  
       2017-11-23 09:51:14 +08:00
    @Sliverburger 给你科普下 php [options] -S <addr>:<port> [-t docroot] Run with built-in web server.
    lbp0200
        81
    lbp0200  
       2017-11-23 10:27:20 +08:00
    泛型,暴露了楼主是 Java 程序员,坐山观虎斗,哼哼。
    mooncakejs
        82
    mooncakejs  
       2017-11-23 10:43:55 +08:00
    go 需要一个 typescript 差不多的 typego
    6ufq0VLZn0DDkL80
        83
    6ufq0VLZn0DDkL80  
       2017-11-23 11:17:34 +08:00
    泛型和模板简直是说烂了的问题了,Go 没有的原因是会拖累编译速度,而编译速度快是 Go 语言诞生的目的之一。等 Go team 找到了合适的解决方案就会加,不过至少要等到 Go 2 了。不过,在有接口的情况下,究竟有多少场景真的需要泛型和模板?

    函数重载和三目运算这些更是可要可不要的东西,而且会给不够熟悉的代码的阅读者造成混淆,代码不是越短越优雅的,为什么不写得清楚一点呢?
    hmli
        84
    hmli  
       2017-11-23 11:18:17 +08:00
    求你别黑 PHP 了
    zhangtao
        85
    zhangtao  
       2017-11-23 11:29:40 +08:00
    我只想说,go 能解决 php 没法解决的问题,这就够了
    pqee
        86
    pqee  
       2017-11-23 11:54:24 +08:00
    几年前我写 go 的时候什么都能忍,错误处理不能忍。
    50vip
        87
    50vip  
       2017-11-23 13:10:04 +08:00
    需要和 js 一样,产生一个 typego
    joye1230
        88
    joye1230  
       2017-11-23 13:43:11 +08:00
    php 程序员莫名遭黑啊

    我接盘过 php 的 workerman 项目觉得,后面换了 golang 的 leaf
    场景不适合->写的不爽->开喷 手动滑稽
    cloud107202
        89
    cloud107202  
       2017-11-23 13:50:44 +08:00
    楼主说的没错啊,难用还不让人说了?只拿出反正我自己写 xxx 时候 blahblah 没什么意义。

    还有关于社区所谓的 我们目标是编译快 -> 泛型很影响编译速度 -> 我们舍弃了泛型
    cloud107202
        90
    cloud107202  
       2017-11-23 13:51:07 +08:00
    不是所谓的舍本逐末么
    solee
        91
    solee  
       2017-11-23 14:48:57 +08:00
    终于有兄弟吐槽了啊~ 一个包管理就搞到我吐血了,ORM 也不是很完善。 本来无事想学学 go 做个小项目,结果发现处处都是泪啊。 只能说仁者见仁吧,我还是喜欢我的 node,pm2, npm, sequelize
    solee
        92
    solee  
       2017-11-23 14:51:08 +08:00
    语言有语言的特性,但是使用便利度,我到现在位置没有感受到~
    Richardweii
        93
    Richardweii  
       2017-11-23 14:58:12 +08:00
    用不用 go 都在这里
    SuperMild
        94
    SuperMild  
       2017-11-23 15:07:19 +08:00
    @solee 从动态语言转到静态语言、从生态丰富的旧语言转到刚开始发展的新语言,写小项目,使用便利度不高是很正常的。你试试别的与 Go 一样年轻的静态语言,就能体会了。
    zjyl1994
        95
    zjyl1994  
       2017-11-23 15:10:49 +08:00
    只有我用 Go 给 ARM 设备写软件么? hhhh
    solee
        96
    solee  
       2017-11-23 15:15:32 +08:00
    @SuperMild 主要是没有领路的,选什么包管理,进程管理有什么可用的 module,ORM 哪个比较好。感觉因为是上升期吧,都是百花齐放,感觉还没有形成比较突出的包。这就给我这种有兴趣的很大的困扰。
    a591826944
        97
    a591826944  
       2017-11-23 15:16:35 +08:00
    nil
    wuhau
        98
    wuhau  
       2017-11-23 15:30:20 +08:00
    @zjyl1994 我用 go 写 openwrt,每次写完都得想办法缩减体积,不然放不下去。
    k9982874
        99
    k9982874  
    OP
       2017-11-23 16:49:27 +08:00
    @solee 本来也想放上来,弄明白规则之后用 dep 还是挺好用的。


    @a591826944 本来也想吐这个,不过不算是大问题,毕竟用人家的东西,得听人家的。
    loading
        100
    loading  
       2017-11-23 16:57:12 +08:00
    if err != nil {


    上面这些字符,我是用过键盘的固件功能,一键输入的,可想而知多恶心。
    1  2  
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2667 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 32ms UTC 02:25 PVG 10:25 LAX 19:25 JFK 22:25
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86