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

再来吹一波 Golang

  •  
  •   josephok · 74 天前 · 11892 次点击
    这是一个创建于 74 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    • 大道至简

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

    • Native

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

    • 并发支持

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

    • 编译快

    无需解释

    • 完善的工具链

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

    欢迎 V 友们补充。

    131 条回复    2021-11-18 16:16:04 +08:00
    1  2  
    angrylid
        1
    angrylid  
       74 天前 via Android   ❤️ 2
    日经贴了。你说的都对,但其实对于我这样的菜狗来说,大佬用啥我就跟着用啥。
    iyear
        2
    iyear  
       74 天前   ❤️ 1
    我尝试预言一波,第一点会被喷死,第二第三点会有人说各种别的语言也支持


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




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

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

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

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

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

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

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