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 · 15229 次点击
    这是一个创建于 899 天前的主题,其中的信息可能已经有所发展或是发生改变。

    作为 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  
    Kasumi20
        101
    Kasumi20  
       2021-11-10 13:44:35 +08:00
    UNIX 被黑得最惨的一次,什么时候 UNIX 主张蛇皮命名了
    Leviathann
        102
    Leviathann  
       2021-11-10 13:50:48 +08:00
    大道至简用英文怎么说
    lancelock
        103
    lancelock  
       2021-11-10 13:51:12 +08:00
    搞技术的多务实,少务虚,成天只会喊口号你以为很高大上吗?你要吹拿点实际例子来说明哪强了,只会拾人牙慧说些经不起推敲的概念,呵呵了
    ppphp
        104
    ppphp  
       2021-11-10 14:01:37 +08:00
    尽量给一些客观的评价,主观的感受很难说服人

    几个直接撒泼打滚的真是搞笑,估计还自以为很高级
    djFFFFF
        105
    djFFFFF  
       2021-11-10 14:39:58 +08:00   ❤️ 1
    所谓大道至简……

    Golang 什么时候支持
    ```
    if err {
    ...
    }
    ```
    而不是一定要
    ```
    if err != nil {
    ...
    }
    ```
    再说大道至简吧。

    日常用 Golang 做开发一年了,写偏技术向的组件的时候,context + channel + goroutine 确实很香。但是一到写业务逻辑,随便哪个语言都比 Goang 好用。
    djFFFFF
        106
    djFFFFF  
       2021-11-10 14:47:52 +08:00
    楼上还有把 Golang 和 Python 比说差不多的,吐了,Python 这句:
    ids = {item.id for item in items}
    用 Golang 得写四行。
    TypeError
        107
    TypeError  
       2021-11-10 14:55:56 +08:00
    @djFFFFF Python 有列表推导式,有 map reduce ,Java 有 stream ,C#有 LinQ ,就 Go 最简陋了
    2i2Re2PLMaDnghL
        108
    2i2Re2PLMaDnghL  
       2021-11-10 15:01:09 +08:00
    请问编译速度有和 ChezScheme 对比过吗?能不能打王垠的脸(
    djFFFFF
        109
    djFFFFF  
       2021-11-10 15:09:16 +08:00
    @TypeError 而且关键是想要用 Go 自己实现一个 stream ,还实现不了,因为没有泛型。吐了
    PureWhiteWu
        110
    PureWhiteWu  
       2021-11-10 15:13:19 +08:00
    “可以很容易地生成数百万个 goroutine ”

    你生成数百万个试试,调度直接炸裂。
    cs419
        111
    cs419  
       2021-11-10 15:14:43 +08:00
    蛮有意思的

    想起以前的段子
    php 是世界上最好的语言 然后论坛炸锅了

    如今:golang 真好用
    然后: 你说说 xxx 功能哪里好用了
    TypeError
        112
    TypeError  
       2021-11-10 15:14:59 +08:00
    @djFFFFF 还好 Go 1.18 加泛型了
    rahuahua
        113
    rahuahua  
       2021-11-10 15:19:58 +08:00
    @balabalaguguji 看了你的帖子,还是好好用动态语言吧,有前途,加油~
    rahuahua
        114
    rahuahua  
       2021-11-10 15:22:35 +08:00
    @djFFFFF 纯好奇问哈,现代静态语言有哪个支持 if varA 然后 varA 可以不是 Bool 类型?
    gavinliu0606
        115
    gavinliu0606  
       2021-11-10 15:25:31 +08:00
    @Leviathann Less is more?
    qW7bo2FbzbC0
        116
    qW7bo2FbzbC0  
       2021-11-10 15:27:45 +08:00
    @TypeError #112 一开始很多文章都把 GO 不支持泛型归于大道至简的特性
    qq1398371419
        117
    qq1398371419  
       2021-11-10 16:03:52 +08:00
    Native 这个牛逼
    ly841000
        118
    ly841000  
       2021-11-10 16:12:51 +08:00
    @rahuahua 支持自定义隐式类型转换的语言都可以
    cassyfar
        119
    cassyfar  
       2021-11-10 17:21:38 +08:00
    比较好奇 if err != nil 哪里难用了?所以大家希望改成什么呢? try catch ?
    Mark24
        120
    Mark24  
       2021-11-10 17:43:45 +08:00
    我想缩短工作时间

    我用 Ruby
    rahuahua
        121
    rahuahua  
       2021-11-10 18:01:54 +08:00
    @ly841000 这种隐式转换看个人喜好吧,但是这玩意跟大道至简没一毛钱关系,另外仅供参考:新生代的静态类型语言 Go Rust Swift kotlin 都禁止这种
    zjsxwc
        122
    zjsxwc  
       2021-11-10 18:06:03 +08:00 via Android
    在 web 领域最快的服务端框架中并没有 go 啊
    zjsxwc
        123
    zjsxwc  
       2021-11-10 18:06:20 +08:00 via Android
    rahuahua
        124
    rahuahua  
       2021-11-10 18:08:49 +08:00
    @cassyfar 优化成 rust/swift 那种语法糖可以少写代码,写系统软件 if err != nil 感觉问题不大,写业务是有些繁琐,搬砖工作量实在是太大了
    jackmrzhou
        125
    jackmrzhou  
       2021-11-10 18:16:32 +08:00 via iPhone
    还有 1.18 加的 type parameters ,看过那个 proposal 就知道类的方法不能加 type parameter. 这就是之前大道至简埋下的坑,以及现在还坚持大道至简所以不加,具体可以去看官方的解释说为啥类方法加个 type parameters 有多麻烦。所以用 1.18 写 map reduce 没办法链式调用,多调用几次 map reduce 那个嵌套惨不忍睹。哦对,golang 大道至简但是拒绝 lambda ,所以看起来就更头疼了。
    所以,扎不多德勒。
    Leviathann
        126
    Leviathann  
       2021-11-10 18:43:47 +08:00
    @cassyfar go 在用积类型处理异常(返回两个值也就是相当于一个 tuple ),而其他现代语言一般都用和类型( Result 、Either )
    Evilk
        127
    Evilk  
       2021-11-11 11:21:49 +08:00
    @liuxu 未来有一天还会?
    liuxu
        128
    liuxu  
       2021-11-11 12:30:10 +08:00
    @Evilk

    圣人云,获罪于天,无所祷也。孤天命已尽,安可救乎?

    然我赵日天,我命由我不由天!
    solobat
        129
    solobat  
       2021-11-11 21:54:48 +08:00   ❤️ 1
    go 太丑了,下不去手
    whyso
        130
    whyso  
       2021-11-16 18:13:45 +08:00
    看完第一感觉高级黑
    EricGoodMan
        131
    EricGoodMan  
       2021-11-18 16:16:04 +08:00
    @gowk 你不说我还以为 v2 不需要🪜
    Mark24
        132
    Mark24  
       189 天前
    这语言是山东人发明的么?

    主打一个倒装句,全是反的。

    逆反心理。语言的观感太差。丑。

    大道至 nil


    golang 能广泛使用,说明码农时间真不值钱
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2631 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 01:43 · PVG 09:43 · LAX 18:43 · JFK 21:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.