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

再来吹一波 Golang

  •  
  •   josephok · 2021-11-09 13:12:59 +08:00 · 15589 次点击
    这是一个创建于 1110 天前的主题,其中的信息可能已经有所发展或是发生改变。

    作为 Go 语言爱好者,我来总结一波 Go 的优势:

    • 大道至简

    Golang 的开发者 Robert Pike 和 Ken Thompson 都是 UNIX 小组的成员,UNIX 系统影响深远,包括 UNIX 哲学-保持简单,也深深影响着后世。他们深刻理解简洁的好处,所以在设计 Golang 时同样保持这一原则。

    • Native

    编译成目标机器代码,部署容易,无需额外的依赖,性能优越。

    • 并发支持

    GoLang 使用 goroutine 来实现并发性,它提供了一个非常优雅的 goroutine 调度程序系统,可以很容易地生成数百万个 goroutine 。

    • 编译快

    无需解释

    • 完善的工具链

    有许多易于使用的内置工具,比如 gofmt 自动排版 Go 代码,很大程度上杜绝了不同人写的代码排版风格不一致的问题,大大提高了团队协作的一致性。

    欢迎 V 友们补充。

    132 条回复    2023-10-20 13:48:27 +08:00
    1  2  
    angrylid
        1
    angrylid  
       2021-11-09 13:15:39 +08:00 via Android   ❤️ 2
    日经贴了。你说的都对,但其实对于我这样的菜狗来说,大佬用啥我就跟着用啥。
    iyear
        2
    iyear  
       2021-11-09 13:17:03 +08:00   ❤️ 1
    我尝试预言一波,第一点会被喷死,第二第三点会有人说各种别的语言也支持


    语言大战马上开始,话说回来这种帖子太招黑了,我甚至觉得你是反串黑🐶
    waising
        3
    waising  
       2021-11-09 13:21:49 +08:00
    go 会用的还是会用,不会用的吹了也不会用,反正每个语言都是一堆问题....看个人喜好和公司要求吧
    josephok
        4
    josephok  
    OP
       2021-11-09 13:22:47 +08:00
    @iyear 这里并没有语言大战的意思。关于第一点,简洁性不是人之常情吗?
    qq1340691923
        5
    qq1340691923  
       2021-11-09 13:26:49 +08:00
    马上就会开始大战了...
    ligiggy
        6
    ligiggy  
       2021-11-09 13:27:22 +08:00   ❤️ 3
    第一点论证不充分。就比方说,衣服的设计师是 xxx ,他的风格是简单,所以他设计出来的新衣服就一定是简单的吗?
    Brian1900
        7
    Brian1900  
       2021-11-09 13:29:18 +08:00   ❤️ 3
    nil 警告
    oott123
        8
    oott123  
       2021-11-09 13:30:42 +08:00   ❤️ 47
    大道 if err != nil
    bipy
        9
    bipy  
       2021-11-09 13:32:47 +08:00
    日经贴,甚至没有新颖的观点
    XTTX
        10
    XTTX  
       2021-11-09 13:35:23 +08:00   ❤️ 2
    你这个肯定会又双叕引起语言大战。 我从 go 弄到 js 到 react 到 ts, 玩过一点点 express.js. 只要写惯了,语言没有什么大不了的。只要团队的代码有明确的标准,都还好。js 也有 eslint 和 prettier , 团队可以确定自己的排版风格。React 换成了 vite(esBuild, go 写的),compile 速度也不慢了。 至于性能,如果你的业务多到语言本身的性能成了瓶颈,我觉得你公司已经是独角兽级别的了,你会有足够的资源解决这些瓶颈。
    MarioLuo
        11
    MarioLuo  
       2021-11-09 13:42:09 +08:00
    Go 语言的三座大山包管理,泛型,错误处理,全搞定就完美了
    Kilerd
        12
    Kilerd  
       2021-11-09 13:46:59 +08:00   ❤️ 1
    大道至 nil
    BeautifulSoap
        13
    BeautifulSoap  
       2021-11-09 13:50:08 +08:00
    Go 泛型要被解决了,但是 Go 这一言难尽无限套娃还不附带调用栈信息的 error 接口,估计还得继续用好多年
    masterclock
        14
    masterclock  
       2021-11-09 13:53:05 +08:00   ❤️ 1
    我设计的语言 void
    1. 大道至简
    一生二,二生三,三生万物,void 回归本质:0
    2. native
    无需部署,兼容过去、现在、未来任何计算架构
    3. 并发支持
    无需解决任何并发带来的问题
    4. 编译快
    无需编译
    5. 完善的工具链
    6. 不存在




    大道至简,首先要是大道啊
    zijieq
        15
    zijieq  
       2021-11-09 13:55:54 +08:00 via iPhone
    包管理太难用了
    xz410236056
        16
    xz410236056  
       2021-11-09 14:06:11 +08:00
    @zijieq #15 有 go mod 之后还行啊
    XTTX
        17
    XTTX  
       2021-11-09 14:14:40 +08:00
    @MarioLuo 包管理我觉得 go.vendor 能解决不少问题,默认选择不带 go.mod 的版本我觉得是有点蠢的。至于错误处理,我觉解决方式在于你设计 app 之初决定什么层级 wrap err 返回到 caller, 什么层级决定处理 err. 具体可以看看 github Ardanlab service repo. 它至少解决了我 web app 错误处理的问题。
    ck65
        18
    ck65  
       2021-11-09 14:19:35 +08:00   ❤️ 21
    Go 语言,又名 Errlang 。
    ciki
        19
    ciki  
       2021-11-09 14:29:34 +08:00
    感觉 go 在国内用的比国外还多
    fenglangjuxu
        20
    fenglangjuxu  
       2021-11-09 14:31:15 +08:00
    go modules 混乱的一逼
    28Sv0ngQfIE7Yloe
        21
    28Sv0ngQfIE7Yloe  
       2021-11-09 14:47:19 +08:00
    @ciki #19 目前是的,
    ravenl
        22
    ravenl  
       2021-11-09 14:48:18 +08:00   ❤️ 3
    wonderfulcxm
        23
    wonderfulcxm  
       2021-11-09 14:56:22 +08:00 via iPhone   ❤️ 1
    上次看到大道至简还是 thinkphp 的文档以及用这玩意的糟糕的体验。
    jackmrzhou
        24
    jackmrzhou  
       2021-11-09 15:36:23 +08:00 via iPhone
    关于简洁性,评价一下 1.18 要上的 type parameter.
    darknoll
        25
    darknoll  
       2021-11-09 15:36:43 +08:00
    开始压根没打算学这个,就非常看不起,觉得还是学 rust 好,可是最后呢,还不是学了 go 。
    不学 go 也行啊,就学 java 去内卷吧。
    gowk
        26
    gowk  
       2021-11-09 15:44:07 +08:00   ❤️ 2
    https://commandcenter.blogspot.com/2012/06/less-is-exponentially-more.html
    少即是多,这篇文章我读过很多遍了,建议学习 Go 的同学都读一下
    SmiteChow
        27
    SmiteChow  
       2021-11-09 15:45:56 +08:00
    人生苦短啊,吹什么啊
    Numbcoder
        28
    Numbcoder  
       2021-11-09 15:47:17 +08:00   ❤️ 1
    大道至简,为什么不去写汇编?
    jackmrzhou
        29
    jackmrzhou  
       2021-11-09 16:00:36 +08:00 via iPhone   ❤️ 3
    @gowk 里面说 no template. 但是 1.18 马上就要上 mini 版 template 了呢.
    作为一名 golang 开发,事实就是我觉得 golang 并没有多好用。 阉割的特性需要用一些蹩脚的方式完成,但是别人告诉我这是大道至简。golang 专有的特性又让一些新转 golang 的经常写出问题。嗯 我说的就是那个 defer 和 channel 。
    用 golang 去写写中间件还行,用来写业务真的是头疼,但是现在又有多少人工作中用 golang 真的是在写中间件呢。
    meiyoumingzi6
        30
    meiyoumingzi6  
       2021-11-09 16:05:19 +08:00
    害....... 不能好好继承蛋疼的一批, 有时候不得不魔改代码,往本地仓放一份
    kett
        31
    kett  
       2021-11-09 16:16:24 +08:00
    生态还是差点,开箱即用的轮子还是少了点。
    ahmcsxcc
        32
    ahmcsxcc  
       2021-11-09 16:21:51 +08:00
    @XTTX 不是 web app 呢
    XTTX
        33
    XTTX  
       2021-11-09 16:30:53 +08:00
    @ahmcsxcc 有什么区别吗?
    ahmcsxcc
        34
    ahmcsxcc  
       2021-11-09 16:34:45 +08:00
    @XTTX 非 web app 没有中间件
    pisc
        35
    pisc  
       2021-11-09 16:37:18 +08:00 via Android   ❤️ 5
    我总结了一下吹某某编程语言的人常有的两个特征:1. 其实还不怎么懂这个语言,坑没踩够,还在蜜月期,2. 见识少
    pigspy
        36
    pigspy  
       2021-11-09 17:14:22 +08:00
    大道至简,指 interface {}
    Fu4ng
        37
    Fu4ng  
       2021-11-09 17:21:21 +08:00
    工作不好找啊。。。
    sanggao
        38
    sanggao  
       2021-11-09 17:25:02 +08:00   ❤️ 2
    满天飞的 if nil
    满天飞的函数参数 interface{}
    谁看得懂?
    看不懂?抱歉 那是你水平太差
    sanggao
        39
    sanggao  
       2021-11-09 17:25:25 +08:00
    golang 开发 web 比 php 有优势?
    longkas239
        40
    longkas239  
       2021-11-09 17:27:04 +08:00
    过时了,2021 年 rust 已经大爆发,只剩下老顽固
    missdeer
        41
    missdeer  
       2021-11-09 17:28:36 +08:00
    你说的都说,但今天.NET6 出了,被他们吹得我都想去试试 C#了
    Chad0000
        42
    Chad0000  
       2021-11-09 17:45:10 +08:00 via iPhone   ❤️ 1
    @missdeer 没有吹,这几年 C#的进步肉眼可见。我在海外,我们这边 C#是主流,市场占一半以上。大家都很期待
    DefoliationM
        43
    DefoliationM  
       2021-11-09 17:47:45 +08:00
    错误处理跟屎一样
    yazinnnn
        44
    yazinnnn  
       2021-11-09 17:47:55 +08:00
    为什么很少有人吹 clojure 呢,国内从业者太少的原因吗。。。
    zhuzhibin
        45
    zhuzhibin  
       2021-11-09 17:49:12 +08:00
    又开始了
    oOoOoOoOoOo
        46
    oOoOoOoOoOo  
       2021-11-09 18:10:47 +08:00 via Android
    @longkas239 Rust 圈 也挺嗨
    pkoukk
        47
    pkoukk  
       2021-11-09 18:11:12 +08:00
    啥时候改改 if err:=
    我代码里起码有三分之一在写这句话
    redmoon0825823
        48
    redmoon0825823  
       2021-11-09 18:23:42 +08:00
    人生苦短,我用 ruby
    JudyHal
        49
    JudyHal  
       2021-11-09 18:29:44 +08:00   ❤️ 3
    判断一个语言好不好,看那些国家用就行了,Go 和 Java 都是典型的只有中国在用的,怎么样就不用我多说了吧?
    guanhui07
        50
    guanhui07  
       2021-11-09 18:39:34 +08:00
    大道至 nil
    hbtech
        51
    hbtech  
       2021-11-09 18:40:15 +08:00   ❤️ 5
    @JudyHal #49 Java 只有中国在用?
    saturn7
        52
    saturn7  
       2021-11-09 18:53:39 +08:00   ❤️ 2
    性能被 C++, Rust 按地上摩擦,生态,GC 又不如 JAVA ,鸡肋选择。
    ncepuzs
        53
    ncepuzs  
       2021-11-09 18:55:23 +08:00   ❤️ 4
    @JudyHal 无知傲慢又愚蠢

    「回复了 josephok 创建的主题 › Go 编程语言 › 再来吹一波 Golang
    判断一个语言好不好,看那些国家用就行了,Go 和 Java 都是典型的只有中国在用的,怎么样就不用我多说了吧?」

    「回复了 passer9527 创建的主题 › 问与答 › 一个疑惑:为啥很多初创公司不选择最主流的技术栈?
    Java 是一个本来就应该死掉的语言,硬是被国内这些培训班救了,可以说没有中国,Java 这种古董语言早就进垃圾桶了,还是把眼界打开多去看看 Go 吧,设计理念会让你得到空前的享受」
    zihuyishi
        54
    zihuyishi  
       2021-11-09 18:58:12 +08:00
    @JudyHal 他厉害因为他是外国人,我垃圾因为我是你的同胞
    aababc
        55
    aababc  
       2021-11-09 19:04:13 +08:00   ❤️ 1
    个人感觉,go 是把复杂从语言层面推到了普通的开发者!感觉它的 大道至简 是对开发 go 语言本身,作为一个使用 go 语言的人,只是觉得别扭!
    wzw
        56
    wzw  
       2021-11-09 19:10:04 +08:00
    Python 换 Golang 的角度来说, 挺好, 越写越越好吧
    raycool
        57
    raycool  
       2021-11-09 19:15:29 +08:00
    我用 python
    别的也不会
    stach
        58
    stach  
       2021-11-09 19:21:51 +08:00   ❤️ 3
    go = python + c
    ---

    go 是一门 get 到了后端程序员 G 点的语言, 用这个公式来表达再恰当不过
    cmdOptionKana
        59
    cmdOptionKana  
       2021-11-09 19:31:10 +08:00   ❤️ 1
    @stach 我用了 go 之后甚至有一点点嫌弃 python ,因为最著名的 python 哲学 The Zen of Python 里说的,反而是 Go 做得比 Python 更好。

    明瞭优于隐晦
    简单优于复杂
    任何问题应有一种且最好只有一种解决方法
    很难解释的,必然是坏方法
    很好解释的,可能是好方法
    hushao
        60
    hushao  
       2021-11-09 19:38:25 +08:00
    需要啥时咱用啥。
    每种语言都不是万能的,充分发挥特长才对。再爱也只是工具,不本末倒置。
    hushao
        61
    hushao  
       2021-11-09 19:46:57 +08:00
    @saturn7 go 国内使用无非就是这俩对比了。性能比 c++差不太多的前提下,又比 java 省不少。所以都大厂在上车,收益明显,中小跟着上车明显是见风使舵。至于语言的其他什么特性如部署、编译、开发体验之类,作为决策人,你觉得除了成本和收益,人家关注么。
    至于个人来说,要么要求啥用啥,要么喜欢啥用啥,无他
    xuyang9978
        62
    xuyang9978  
       2021-11-09 19:59:57 +08:00 via iPhone
    个人很喜欢 go (不过这些优点感觉网上都说腻了😂
    lbp0200
        63
    lbp0200  
       2021-11-09 20:03:13 +08:00
    爽就行了,不要出来炫耀,低调
    gowk
        64
    gowk  
       2021-11-09 20:05:48 +08:00   ❤️ 3
    「 Go 和 Java 都是典型的只有中国在用的,怎么样就不用我多说了」
    一口老血喷出来,差点当场出世,看来以后得少逛 V2 了,好多没有意义的讨论
    gowk
        65
    gowk  
       2021-11-09 20:06:58 +08:00   ❤️ 2
    @gowk 按说能翻墙出来上 v2 的人,不至于啊……
    stach
        66
    stach  
       2021-11-09 20:11:00 +08:00
    @cmdOptionKana Python 就像一个美女, 当你熟悉了, 却发现她有口臭, 有点嫌弃, 哈哈哈
    halfer53
        67
    halfer53  
       2021-11-09 20:15:47 +08:00
    @Chad0000 澳洲或者纽村?
    leeg810312
        68
    leeg810312  
       2021-11-09 20:29:35 +08:00 via Android
    go 加了泛型,可能要加模板了,还大道至简吗?我们开发组在做一个产品,最初也是希望轻量简洁,随着产品进化,筛选特性,很多次迭代做到现在还是变重了。为了满足技术需求,最终 go 也会走上逐渐增加特性的道路
    szkoda
        69
    szkoda  
       2021-11-09 20:44:27 +08:00
    百团大战开始了,这种帖真是流量密码啊
    balabalaguguji
        70
    balabalaguguji  
       2021-11-09 21:20:06 +08:00
    曾今我刚学习 Go 时也是有你这种错觉,知道我开始用它来跟 Mongodb 交互,吐了,看帖 https://www.v2ex.com/t/810126#reply98
    balabalaguguji
        71
    balabalaguguji  
       2021-11-09 21:20:35 +08:00
    直到
    zxCoder
        72
    zxCoder  
       2021-11-09 22:04:55 +08:00
    golang 的大道至简(if err != nil) 就跟苹果的刘海一样 hhh
    TypeError
        73
    TypeError  
       2021-11-09 22:08:18 +08:00   ❤️ 1
    我还是喜欢 python ,除了速度慢
    go 其实就那样,该加的特性不加,enum 都没有,反而 protobuf 里有,又要用代码生成实现一次
    不该加的特性加了,比如比较 nil interface 的时候非要比较 type 和 value 两个地方,太傻逼了
    micean
        74
    micean  
       2021-11-10 00:53:45 +08:00
    @ncepuzs

    难道 spring 出了这么多个版本,是被中国人救活的吗?
    Chad0000
        75
    Chad0000  
       2021-11-10 02:45:40 +08:00 via iPhone
    @halfer53 #67 嗯,纽村。
    wangritian
        76
    wangritian  
       2021-11-10 08:10:59 +08:00
    忽略使用场景谈语言没有意义,go 是做高并发中间件的
    ncepuzs
        77
    ncepuzs  
       2021-11-10 08:15:02 +08:00
    @micean 眼睛不好就去挂个号吧,实在不行捐了也行
    p1gd0g
        78
    p1gd0g  
       2021-11-10 09:11:11 +08:00
    我还是喜欢 go 一点,c# 光是语法就够让我喝一壶了。
    suyuyu
        79
    suyuyu  
       2021-11-10 09:19:53 +08:00
    重新定义 `简`
    fsdrw08
        80
    fsdrw08  
       2021-11-10 09:25:56 +08:00 via Android
    @missdeer 这么高的 C#占有率,没猜错应该是澳洲新西兰吧?
    ZeroDu
        81
    ZeroDu  
       2021-11-10 10:07:01 +08:00
    javaer:怎么说,这些真的没有绝对的。就平时搞一些一个小工具来看,go 的内存占用是真的香,对比 java 来说可能要占用 10 倍多吧。但是 go 其他发面是倒是没有 java 好使。
    fengjianxinghun
        82
    fengjianxinghun  
       2021-11-10 10:08:13 +08:00
    @oott123 至简 interface{}
    dragondove
        83
    dragondove  
       2021-11-10 10:08:18 +08:00   ❤️ 2
    大道至简,我发明的语言“太极”,语法就两个字“阴”和“阳”。阴为 0 阳为 1 。
    native: 编译成机器码,性能看编写的人。
    并发支持:如果你觉得不好,可以把其他的语言写的程序编译成二进制,然后转换为“太极”语言进行阅读学习。
    编译快:无需解释
    完善的工具链:任何工具链都可以使用,因为任何语言都可以最终翻译成“太极”。代码风格只有一种,不用担心不一致的问题。
    necodba
        84
    necodba  
       2021-11-10 10:19:44 +08:00
    C 艹不好吗
    FightPig
        85
    FightPig  
       2021-11-10 10:23:21 +08:00
    泛型要来了,以后的代码估计至简不了了,然后我最满意的就是编译速度,用 rust 总觉得 慢
    tedcon
        86
    tedcon  
       2021-11-10 10:27:43 +08:00   ❤️ 1
    我喜欢 TypeScript
    libook
        87
    libook  
       2021-11-10 10:30:51 +08:00
    零食🍬小板凳🪑围观撕逼大战🔭

    十年前见的最多的是“PHP 是世界上最好的语言”。
    imkerberos
        88
    imkerberos  
       2021-11-10 10:39:49 +08:00
    @dragondove 你说出了我的心声.
    imkerberos
        89
    imkerberos  
       2021-11-10 10:42:55 +08:00
    @pigspy 大道至简: void*
    hush3
        90
    hush3  
       2021-11-10 10:51:42 +08:00
    啊对对对
    bxb100
        91
    bxb100  
       2021-11-10 11:15:07 +08:00
    照这么说, rust 不是更值得吹吗
    skipwitit
        92
    skipwitit  
       2021-11-10 11:32:30 +08:00
    对于大多数场景来说,python 和 go 完成需求,没什么区别
    哪个撸的快用哪个就行
    fyxtc
        93
    fyxtc  
       2021-11-10 11:51:39 +08:00
    好无聊啊,这都能上热榜,讨论语言本身果然还是最具有流量的,毕竟谁都能插一句。。。
    Phishion
        94
    Phishion  
       2021-11-10 11:54:03 +08:00
    现在都没几个人吹 PHP 了,俺的青春结束了
    lysS
        95
    lysS  
       2021-11-10 12:00:19 +08:00
    @jackmrzhou 和别的语言都一样,那 go 的作用是什么? go 的简单的理念有什么问题
    liuxu
        96
    liuxu  
       2021-11-10 12:32:33 +08:00
    @Phishion PHP 曾经是最好的语言,未来有一天一定还会再成为最好的语言。
    exhades
        97
    exhades  
       2021-11-10 12:51:44 +08:00
    golang 就是为了简单的简单的语言而已。。。rust 才是最终答案 (手动狗头
    https://www.zhihu.com/question/490074663/answer/2207090107
    https://www.zhihu.com/question/352343414/answer/868915902
    exhades
        98
    exhades  
       2021-11-10 12:53:50 +08:00
    @exhades #97 打错 - - 应该是 为了简单而简单的语言而已
    Zwying
        99
    Zwying  
       2021-11-10 13:03:55 +08:00
    js yyds
    mx8Y3o5w3M70LC4y
        100
    mx8Y3o5w3M70LC4y  
       2021-11-10 13:33:10 +08:00
    ts, yyds
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1351 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 41ms · UTC 17:38 · PVG 01:38 · LAX 09:38 · JFK 12:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.