V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
xmge
V2EX  ›  程序员

一句话概括为什么学习 go 语言

  •  
  •   xmge · May 7, 2020 · 21585 views
    This topic created in 2192 days ago, the information mentioned may be changed or developed.

    从 17 年开始学习 go 的,之前是做 java 开发的,刚开始写 go 的时候,我去,怎么不写 “;”,这么不严谨,不过 go 起来挺舒服的,直接写方法也挺舒服的,后来有次又写 java,我去,为啥要写 “;”。

    大家都是为什么学习 go 啊。用一句话概括一下,为什么一句话,因为一句话才是精华啊。

    Supplement 1  ·  May 7, 2020
    哈哈,会不会因为这个帖子,在 go 生态圈又诞生了几个大佬。
    164 replies    2020-06-25 13:25:01 +08:00
    1  2  
    jimyan
        101
    jimyan  
       May 7, 2020
    @shoaly 依赖 libc
    loading
        102
    loading  
       May 7, 2020 via Android
    时髦
    ica10888
        103
    ica10888  
       May 7, 2020
    大道至简
    monkeyWie
        104
    monkeyWie  
       May 7, 2020   ❤️ 1
    在公司做分享的时候总结了三点:
    1. 同步 IO 写法,底层自动转异步 IO,这点写过 JAVA NIO 的应该都能体会到有多爽
    2. 协程
    3. 静态编译,交叉编译,并且体积可以接受

    关于开发效率这点,并没有觉得有什么提升,除非是开发偏底层中间件之类的东西,我自己用 go 一般都是开发一些网络协议方面的东西。
    写业务的话还是 java 比较香,毕竟 go 缺少泛型、异常处理、动态代理、全家桶等等。
    charlie21
        105
    charlie21  
       May 7, 2020
    golang 广告做得好
    charlie21
        106
    charlie21  
       May 7, 2020
    ( 能把拐杖卖给腿脚好的人 )
    monkeyWie
        107
    monkeyWie  
       May 7, 2020
    然后刚好公司自研的 DevOPS 平台需要和 docker 和 k8s 打交道,所以也是工作和业余都用上了 go
    cenx
        108
    cenx  
       May 7, 2020
    比较简单,容易上手
    sxszzhrrt
        109
    sxszzhrrt  
       May 7, 2020
    公司要求,为了有口饭吃
    blless
        110
    blless  
       May 7, 2020 via Android
    不知道 v 站哪来的这么大怨气哦,我就觉得 rust 麻烦,python 效率不行,java 吃内存嘛。go mod 现在各种 goproxy 不香吗。
    bearbaba
        111
    bearbaba  
       May 7, 2020
    够浪( golang )
    pythonee
        112
    pythonee  
       May 7, 2020
    技多不压身,想看下协程机制
    justfortest
        113
    justfortest  
       May 7, 2020
    我只想说动态类型一时爽,一直动态一直爽,python 大法好,ruby 大法好。
    cmdOptionKana
        114
    cmdOptionKana  
       May 7, 2020   ❤️ 16
    用 Go 编程心智负担很低。

    必须承认 Go 的缺点是 “不好玩”,没有黑魔法,由于没有泛型有时(很少时候)会需要手动复一些代码造成冗余,每隔几行就要写一次 if err != nil,连三目运算符都没有,一大堆现代编程语言的语法一概不提供!只能老老实实用最原始最基本的语法来写程序。

    但这些代价是值得的,由于语法精简,因此易学、编程时会分散注意力去搞黑魔法、看别人的代码或自己的旧代码非常清晰易懂、不管谁写出来的 Go 代码编程风格都比较一致。

    由于错误处理采用了 verbose 到极致的方式,因此如果老老实实处理每一个 error (这也是 Go 文化之一),将会发现 debug 非常轻松,这是一个极大的优点,一旦感受到这一点,就能容忍 if err != nil 了。

    语法精简的另一个大好处是,闪电般的编译速度,这点也是非常爽。

    还有就是标准库很强大,而且质量很高,官方文档非常优秀,社区、生态发展良好等等,很多优点。
    justfortest
        115
    justfortest  
       May 7, 2020
    @shoaly 很多语言都可以打包成可执行文件,golang 有些库依旧需要依赖和编译。
    amtb
        116
    amtb  
       May 7, 2020 via iPhone
    @Hanggi #75
    IsaacYoung
        117
    IsaacYoung  
       May 7, 2020
    先问是不是
    orm
        118
    orm  
       May 7, 2020 via iPhone
    学完 go 学 rust,赶时髦
    Acoolda
        119
    Acoolda  
       May 7, 2020 via Android
    因为 go to win 啊
    loryyang
        120
    loryyang  
       May 7, 2020
    似乎看起来比较潮?
    JB18CM
        121
    JB18CM  
       May 7, 2020
    SlipStupig
        122
    SlipStupig  
       May 7, 2020   ❤️ 3
    因为自己智商不够又想写高性能程序
    frankyzf
        123
    frankyzf  
       May 7, 2020   ❤️ 2
    有个疑虑是 Google 隔一段时间就会抛弃一些产品,有点担心这点(虽然 Go 开源)。
    silvernoo
        124
    silvernoo  
       May 7, 2020
    没人提交叉编译吗?我投一个交叉编译
    guonaihong
        125
    guonaihong  
       May 7, 2020
    @jimyan go 可以不依赖 libc,直接 env CGO_ENABLED=0 就行。
    chengxiao
        126
    chengxiao  
       May 7, 2020
    没有那么多花里胡哨的写法,都老老实实的写好逻辑,看别人源码不是很吃力
    huoru
        127
    huoru  
       May 7, 2020   ❤️ 1
    不为什么,因为 go 是富二代,爹好名声大,所以跟风去了,至于实际上好不好?营销做的好,好不好都不是问题。
    CEBBCAT
        128
    CEBBCAT  
       May 7, 2020 via Android
    @greatgodwei Go 的工资真的很高吗?我实习 Go 五个月了,也可能是因为我拿的是实习工资的原因……
    yuzhiquan
        129
    yuzhiquan  
       May 7, 2020
    kubernetes
    poplar50
        130
    poplar50  
       May 7, 2020 via Android
    生活所迫
    May725
        131
    May725  
       May 7, 2020
    类型和名字 为什么要换方向
    Axel2
        132
    Axel2  
       May 7, 2020 via iPhone   ❤️ 4
    If you want to make love wearing nothing, choose C.
    If you want to make love wearing a condom, choose Go.
    If you want to make love wearing a spacesuit, choose Rust.
    之前在 Reddit 上看到的。所以我选 go
    wangyzj
        133
    wangyzj  
       May 7, 2020
    @Axel2 666
    pmx1990
        134
    pmx1990  
       May 7, 2020 via iPad
    改 k8s 源码 ,
    cloverzrg2
        135
    cloverzrg2  
       May 8, 2020
    @AngryMagikarp #14 go 开发的 frp 可以运行在路由器、linux 、win 等设备上 https://github.com/fatedier/frp/releases,你只是只接触服务端的开发
    chinesestudio
        136
    chinesestudio  
       May 8, 2020 via Android
    @shoaly 我也用 go 。但是 可以用不代表一直好用。一样要再编译再部署。能解决问题的都是好语言。
    lewinlan
        137
    lewinlan  
       May 8, 2020 via Android
    静态编译类型——可靠
    工具链齐全——省心
    强制语法——好读好写
    原生协程——无痛并发
    与 ts 语法接近——快乐全栈
    GG668v26Fd55CP5W
        138
    GG668v26Fd55CP5W  
       May 8, 2020 via iPhone
    PHP 做不到的地方,它做到了
    xmge
        139
    xmge  
    OP
       May 8, 2020
    @IsaacYoung 先问是不是,再问为什么,哈哈,看来是的人挺多,这个问题就是是的人回答。不是的人了解了解。
    gonearewe
        140
    gonearewe  
       May 8, 2020 via Android
    并发好写
    raptor
        141
    raptor  
       May 8, 2020
    为了一个 python 程序能在 windows 上跑,用 go 改写了……因为所有 python 的并发机制都依赖 libev 之类的 windows 没有的东西
    sunwq
        142
    sunwq  
       May 8, 2020
    因为有个好爹
    zzzmh
        143
    zzzmh  
       May 8, 2020
    闲的发慌 精力旺盛 无处发泄 和自己较劲 自己为难自己 花时间找罪受
    (滑稽)
    zjsxwc
        144
    zjsxwc  
       May 8, 2020
    @Axel2

    Go 不能和 Rust C/C++比较,因为 gc 是个本质的区别
    bintianbaihua
        145
    bintianbaihua  
       May 8, 2020
    因为香。。
    vanishcode
        146
    vanishcode  
       May 8, 2020
    大学时候写 web 项目交作业特别方便
    yuShan1
        147
    yuShan1  
       May 8, 2020
    一个字就够了: 钱
    fancy2020
        148
    fancy2020  
       May 8, 2020
    为了看 V2Ray 的代码(:逃
    sherryqueen
        149
    sherryqueen  
       May 8, 2020
    后端用着. 顺带喊我学了.
    xhinliang
        150
    xhinliang  
       May 8, 2020
    @shoaly run anywhere 你可拉倒把
    6xiaowu9
        151
    6xiaowu9  
       May 8, 2020
    就搞不懂做 PHP 的为什么要转 GO
    hunter2015
        152
    hunter2015  
       May 8, 2020
    python 性能不好(学习之后发现,go 单进程性能并不必 python 好)
    evilic
        153
    evilic  
       May 8, 2020
    单独的了解一下 go,以便确认它的使用情况,方便在未来使用它方便完成任务的时候使用它。
    zhengdaozi
        154
    zhengdaozi  
       May 8, 2020 via Android
    给我工资我就学,其实用是因为公司直播的聊天项目,使用 php 沾满,而 go 降低不少,别说 swoole,因为我的 go 也一样很烂
    sunxiansong
        155
    sunxiansong  
       May 8, 2020
    启动快,内存门槛低,单元测试方便,强类型,编译型,直接打包二进制,简单 花里胡哨的东西少

    没错我原来主要写 java,js
    qW7bo2FbzbC0
        156
    qW7bo2FbzbC0  
       May 8, 2020
    @lewinlan 你说的这些 c# on .NetCore 也适合啊
    fovecifer
        157
    fovecifer  
       May 8, 2020
    在我看来两点:
    1. 单个可执行文件,没有恶心的运行时依赖问题
    2. 用户内核线程 M:N 模型,理论上最高效的模型吧
    pursuer
        158
    pursuer  
       May 8, 2020
    @fovecifer 理论最高效应该是回调,但是我想你大概不会喜欢这么写异步程序的
    shoaly
        159
    shoaly  
       May 8, 2020
    @xhinliang 嗯 莫非你觉得 java 才更是 run anywhere ?...
    xyjincan
        160
    xyjincan  
       May 8, 2020 via Android
    比 c 方便,执行文件哪里都能执行
    xyjincan
        161
    xyjincan  
       May 8, 2020 via Android
    gc,内存动态占用,不用知道返还给系统
    qwefdrt
        162
    qwefdrt  
       May 8, 2020
    工作必须得用
    labubu
        163
    labubu  
       May 9, 2020 via Android
    没人从 cpp 转过去的嘛?
    jinsongzhao
        164
    jinsongzhao  
       Jun 25, 2020
    我也可以一句话概括为何不学 golang 。
    我主要语言是 C/C++/Java,go 不能替代它们所以不学。

    go 不能替代 C/C++,已成定局。go 不能消灭 java 只能并存也是定局,这样转 go 的动力只有两个了,多个技能多个机会的机会主义,不擅长 java 的方式更擅长 go 的思维方式。
    1  2  
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   992 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 137ms · UTC 19:21 · PVG 03:21 · LAX 12:21 · JFK 15:21
    ♥ Do have faith in what you're doing.