V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xmge
V2EX  ›  程序员

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

  •  
  •   xmge · 2020-05-07 12:35:48 +08:00 · 19871 次点击
    这是一个创建于 1653 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

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

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

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

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

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

    go 不能替代 C/C++,已成定局。go 不能消灭 java 只能并存也是定局,这样转 go 的动力只有两个了,多个技能多个机会的机会主义,不擅长 java 的方式更擅长 go 的思维方式。
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1037 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 22:42 · PVG 06:42 · LAX 14:42 · JFK 17:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.