V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
xmge
V2EX  ›  程序员

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

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

    从 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  
    shoaly
        1
    shoaly  
       2020-05-07 12:52:00 +08:00   ❤️ 19
    我觉得 go 的优势只有一个, 打包出来就是一个执行文件, 真正的 write once, run anywhere
    qq1340691923
        2
    qq1340691923  
       2020-05-07 12:57:20 +08:00
    协程
    gunavy
        3
    gunavy  
       2020-05-07 12:58:19 +08:00
    面向对象的 c
    LokiSharp
        4
    LokiSharp  
       2020-05-07 12:58:35 +08:00
    不学
    lazydog
        5
    lazydog  
       2020-05-07 12:59:28 +08:00 via Android
    工作需要
    tikazyq
        6
    tikazyq  
       2020-05-07 13:01:12 +08:00
    zxc12300123
        7
    zxc12300123  
       2020-05-07 13:04:31 +08:00 via iPhone   ❤️ 9
    因为只会 python 要学一门静态语言
    simapple
        8
    simapple  
       2020-05-07 13:12:38 +08:00
    Vegetable
        9
    Vegetable  
       2020-05-07 13:13:43 +08:00   ❤️ 4
    跟风
    houshuu
        10
    houshuu  
       2020-05-07 13:15:56 +08:00
    1. 跨平台的时候很方便,执行文件发给别人直接运行。
    2. 协程上手容易。
    3. 强制格式化,便于阅读他人代码。
    sadfQED2
        11
    sadfQED2  
       2020-05-07 13:18:16 +08:00 via Android   ❤️ 1
    因为钱
    lhx2008
        12
    lhx2008  
       2020-05-07 13:20:31 +08:00 via Android
    最大的动力还是公司要求,JAVA 的跨平台性明显更强
    leoleoasd
        13
    leoleoasd  
       2020-05-07 13:24:53 +08:00
    在编译型语言里, 跨全平台, (go mod)包管理器做的不错, 标准库和第三方库都很多的也只有 go 了吧?

    还有协程太香
    AngryMagikarp
        14
    AngryMagikarp  
       2020-05-07 13:26:23 +08:00
    因为 Go 是综合开发效率和运行效率最好的语言。

    楼上说跨平台的,毫无意义,你们家部署的 JAVA 经常 Windows 、Linux 来回切换吗。
    zjsxwc
        15
    zjsxwc  
       2020-05-07 13:27:11 +08:00   ❤️ 1
    没有泛型不想用 golang,逃
    teawithlife
        16
    teawithlife  
       2020-05-07 13:28:46 +08:00   ❤️ 2
    初期:闲着没事,随便找门带 gc 的语言学学
    入门:交叉编译和单文件执行太惊艳了
    了解:我居然敢去看其他大佬的源码,而且居然一看就看懂了,顺手提个 PR 吧
    6IbA2bj5ip3tK49j
        17
    6IbA2bj5ip3tK49j  
       2020-05-07 13:29:57 +08:00
    说 Go 开发效率的,我怀疑是不是只写过 C 或者汇编之类的。
    damngood
        18
    damngood  
       2020-05-07 13:30:55 +08:00
    简单明了的方式把事情搞定的能力...
    AngryMagikarp
        19
    AngryMagikarp  
       2020-05-07 13:31:14 +08:00
    说"说 Go 开发效率的,我怀疑是不是只写过 C 或者汇编之类的。" 的我怀疑小学语文没有毕业。
    hankai17
        20
    hankai17  
       2020-05-07 13:32:21 +08:00
    把面向回调编程 变成 同步 /阻塞式编程
    shoaly
        21
    shoaly  
       2020-05-07 13:32:43 +08:00
    @AngryMagikarp 并不光是网站, 还有很多 场景是给客户用的.... 你给 1 客户去装个 java 运行时不烦, 你给 100 个客户装 你就烦了... 这个时候 丢一个 go 运行文件给他 不香么
    hheedat
        22
    hheedat  
       2020-05-07 13:32:55 +08:00
    @lhx2008 国内不是 90%的 server 都是 centos 吗?跨平台强有啥优势?
    kneep
        23
    kneep  
       2020-05-07 13:33:34 +08:00 via iPhone
    高层语言的手感,底层语言的效率
    hantsy
        24
    hantsy  
       2020-05-07 13:36:12 +08:00
    从企业开发需求角度,GO 属于还没进化过来的语言。
    foreverfuck
        25
    foreverfuck  
       2020-05-07 13:39:22 +08:00   ❤️ 2
    工资高,别说那些有的没的,钱多就行了。
    cabing
        26
    cabing  
       2020-05-07 13:40:51 +08:00
    简单粗暴:) 逃。。
    zzzzzzggggggg
        27
    zzzzzzggggggg  
       2020-05-07 13:43:04 +08:00
    因为想学就学
    justin2018
        28
    justin2018  
       2020-05-07 13:43:44 +08:00
    看你们都在说 看你们都在学 于是 我也学了 😁
    sunmker
        29
    sunmker  
       2020-05-07 13:53:19 +08:00   ❤️ 1
    因为有人在吹,所以想学
    dilu
        30
    dilu  
       2020-05-07 13:58:19 +08:00
    楼上一大堆优点,归根结底一个字:钱
    DelayNoMay
        31
    DelayNoMay  
       2020-05-07 13:59:05 +08:00
    此时默默走过一名帅气的 golang 工程师
    lithbitren
        32
    lithbitren  
       2020-05-07 14:01:38 +08:00
    rust 太费劲
    TypeError
        33
    TypeError  
       2020-05-07 14:02:47 +08:00
    有人用,没人用的语言就懒得学了
    index90
        34
    index90  
       2020-05-07 14:03:33 +08:00
    简单,方便
    gamexg
        35
    gamexg  
       2020-05-07 14:04:26 +08:00
    编译后单文件,之前各种依赖库实在头大,go 解决了这个麻烦。
    协程,避开了回调地狱。
    内置交叉编译支持,可以轻松编译出来多个平台下的代码。
    wangyzj
        36
    wangyzj  
       2020-05-07 14:04:33 +08:00
    用来替代 c++
    DGideas
        37
    DGideas  
       2020-05-07 14:06:21 +08:00
    好玩,写了很多年别的编程语言了,学习一门新语言有一种(工程上的)新鲜感
    purensong
        38
    purensong  
       2020-05-07 14:07:25 +08:00
    我觉得 go 代码风格不错,变量和类型我们通常在 java 里都是 int a,在 go 里面反过来,而且 go 的闭包也更加容易,写个多线程 go 一下就可以,通过通道在线程间传递变量很容易。自学了几天 go,还是老老实实工作写 java 了,害怕哪天代码出事故
    Kilerd
        39
    Kilerd  
       2020-05-07 14:07:59 +08:00
    @leoleoasd #13 rust 的 cargo 表示问号?
    cnbattle
        40
    cnbattle  
       2020-05-07 14:08:27 +08:00
    多年 phper, 想多会一门语言,中间断断续续尝试 java python 都在基础语法相关的学习中不舒服不习惯放弃了,知道两年前了解到 go,一直很舒服。。。可惜 昆明几乎没有公司主力用 go 的。。。
    leoleoasd
        41
    leoleoasd  
       2020-05-07 14:10:12 +08:00
    @Kilerd #39 打扰了的确还有
    leoleoasd
        42
    leoleoasd  
       2020-05-07 14:10:26 +08:00
    @Kilerd #39 没咋了解过 rust2333
    jin7
        43
    jin7  
       2020-05-07 14:14:17 +08:00   ❤️ 1
    宁学 c++也不想学 go 狗头保命
    ConradG
        44
    ConradG  
       2020-05-07 14:15:32 +08:00
    一句话:听说 go 的协程挺不错。

    然后学过后觉得……作为 C 的应用软件开发侧的增强算是合格的,但也就仅此而已,目前 go 的工程能力还是有欠缺。
    dayeye2006199
        45
    dayeye2006199  
       2020-05-07 14:16:26 +08:00
    因为需要用开发 k8s 相关。
    aliensb
        46
    aliensb  
       2020-05-07 14:28:53 +08:00
    不想写 python 了。。。
    hxtheone
        47
    hxtheone  
       2020-05-07 14:28:54 +08:00
    协程太香
    hideinbush
        48
    hideinbush  
       2020-05-07 14:30:06 +08:00
    @jin7 +1
    wangyzj
        49
    wangyzj  
       2020-05-07 14:31:00 +08:00
    @ConradG 说来听听
    yukiloh
        50
    yukiloh  
       2020-05-07 14:33:23 +08:00 via Android   ❤️ 3
    满屏幕 if nil
    go mod1.13 之前简直灾难
    如果没有七云牛我都不知道怎么下依赖
    Leon6868
        51
    Leon6868  
       2020-05-07 14:34:50 +08:00
    @shoaly “py 做不到”系列
    hideinbush
        52
    hideinbush  
       2020-05-07 14:35:39 +08:00   ❤️ 1
    我初学诗日,但欲工藻绘;
    中年始少悟,渐若窥宏大。
    怪奇亦间出,如石漱湍濑。
    数仞李杜墙,常恨欠领会。
    元白才倚门,温李真自郐。
    正令笔扛鼎,亦未造三昧。
    诗为六艺一,岂用资狡狯?
    汝果欲学诗,工夫在诗外。
    defunct9
        53
    defunct9  
       2020-05-07 14:38:27 +08:00
    一个字,闲
    bluefalconjun
        54
    bluefalconjun  
       2020-05-07 14:40:42 +08:00   ❤️ 1
    嵌入式程序员只会 C.
    想着学个面向对象的语言 看了下 go 好简单 走起...
    imherer
        55
    imherer  
       2020-05-07 14:41:11 +08:00
    一开始是跟风,学了之后:真 TM 香~
    xmge
        56
    xmge  
    OP
       2020-05-07 14:42:06 +08:00
    @hideinbush 好诗好诗
    d0m2o08
        57
    d0m2o08  
       2020-05-07 14:44:51 +08:00
    交叉编译二进制真他妈香
    KasonPasser
        58
    KasonPasser  
       2020-05-07 14:48:12 +08:00
    你们都用 go 找到工作吗?
    namelosw
        59
    namelosw  
       2020-05-07 14:55:39 +08:00
    感觉说 routine 之类的其他语言也有,还有 Elixir 之类也挺好用的方案,我来换个视角:

    Rob Pike 之前聊过静态类型一般安全,运行比较快,但比较较笨重,编译慢开发效率低,所以后来反而又流行了动态类型语言或者脚本语言,效率确实很高
    但是动态类型或者脚本语言有时候火葬场
    当然还有 C/C++这种编译又慢又类型不安全火葬场的

    这时候你就会发现可以画出一个四象限,C/C++对角之前没有语言
    这个就是 Go 的 niche,又轻快又有静态类型,带着这个奔着象限 niche 的初衷,Go 各方面包括工具设计得也都轻快简洁,这个其实是很多人第一印象感觉一般,用起来感觉真香的原因
    lepig
        60
    lepig  
       2020-05-07 14:58:18 +08:00
    因为怕死 怕饿死
    keepeye
        61
    keepeye  
       2020-05-07 15:12:52 +08:00
    单文件部署、语法级协程和管道、比脚本强太多的运行效率
    RubyJack
        62
    RubyJack  
       2020-05-07 15:14:20 +08:00
    主要还是设计哲学上对口味, 例如组合优于继承, 延后抽象,CPS 模型等等
    uuker
        63
    uuker  
       2020-05-07 15:16:32 +08:00
    python, 慢
    ShuoHui
        64
    ShuoHui  
       2020-05-07 15:18:16 +08:00 via iPhone
    打算 Python 熟练了,做几个项目,就去学 go……
    CEBBCAT
        65
    CEBBCAT  
       2020-05-07 15:18:28 +08:00 via Android
    @KasonPasser 工作不好找,但也找得到,北京上海都有
    timothyye
        66
    timothyye  
       2020-05-07 15:22:15 +08:00
    Go 打包出来的 Docker 镜像真香
    KasonPasser
        67
    KasonPasser  
       2020-05-07 15:33:38 +08:00
    @CEBBCAT so 我也就学了个语法就完事了,没有深入了解了。
    please0stop
        68
    please0stop  
       2020-05-07 15:39:04 +08:00 via Android
    有指针,灵活简洁,兼顾脚本性与系统性
    ID2333
        69
    ID2333  
       2020-05-07 15:49:46 +08:00
    又想骗我学 Go
    dullwit
        70
    dullwit  
       2020-05-07 15:50:03 +08:00
    话说 kotlin 也支持 native 呀
    ClarkAbe
        71
    ClarkAbe  
       2020-05-07 15:50:49 +08:00 via iPhone   ❤️ 1
    简单方便跨平台包管理也便捷
    1.随时写点小工具,标准库的强大让我不必去打开 github
    2.写点小服务直接交叉编译丢路由器上就能跑,这点无论是 python 还是 java 都做不到的( py 要 pip 装一堆库,java 要装虚拟机
    3.编译成功过后基本不用去考虑什么动态链接库 /dll......静态语言的嚣张
    4.性能是真的超级好,一堆 php 的东西用 go 重写过后简直快起飞了,相见恨晚
    5.go mod 真香……为此自己还写了个脚本用来把自己经常用的库打包自己的微(重)服务,放心有 go vendor 不会出现分发源代码几百 M 的情况,除非一个项目用到了全部库?!(应该是不太可能
    fenglangjuxu
        72
    fenglangjuxu  
       2020-05-07 15:53:08 +08:00
    go mod 导致 pkg 下面 一个包 n 多个版本 真是讨厌
    lordofhollows
        73
    lordofhollows  
       2020-05-07 15:53:34 +08:00
    比 Java 简洁,方便
    协程、Channel 、指针、RPC 之类的
    Jackeriss
        74
    Jackeriss  
       2020-05-07 16:07:53 +08:00
    为什么不学 go ? 因为学了 python 、java 和 js,就没动力学 go 了,在语法、生态和实用性上都不如 python 、java 和 js,go 并不是不可替代的语言,没有不学不行的理由,除非你是搞虚拟化的,还有之前是学 php 的和打死不学 java 的也许可以考虑学下 go 。
    Hanggi
        75
    Hanggi  
       2020-05-07 16:10:52 +08:00
    语言层面:
    强制代码风格,自动格式化,无需配置,语法简单精炼,砍掉类继承多态,标准库 /谷歌库异常强大。。。
    工程方面:
    编译非常快,对系统依赖极少,无需配置运行环境,性能好,并发好,开发效率,交叉编译。
    感情方面:
    python 版本管理太糟心,java 太笨重,c++ 编译太慢
    looppppp
        76
    looppppp  
       2020-05-07 16:11:09 +08:00
    第一眼看见就喜欢这种语法,简洁,没有啥花里胡哨
    Rwing
        77
    Rwing  
       2020-05-07 16:12:04 +08:00   ❤️ 3
    我就想问一句,C# 不香吗?
    ben1024
        78
    ben1024  
       2020-05-07 16:12:54 +08:00
    @Jackeriss 不幸连中 java,php 两枪,go 语言上还好,生态上还是有些薄弱
    gaius
        79
    gaius  
       2020-05-07 16:13:56 +08:00 via Android
    我也在学
    pursuer
        80
    pursuer  
       2020-05-07 16:27:33 +08:00
    很迷惑,最早的时候 C 程序都是静态编译的,后来为了避免内存中存在库的多个副本造成内存浪费,出现了动态库,然后,Go 又改了回去,然后这个特性受到了广泛好评。。。
    crs0910
        81
    crs0910  
       2020-05-07 16:28:47 +08:00 via iPhone   ❤️ 5
    地鼠比较萌
    xmge
        82
    xmge  
    OP
       2020-05-07 16:31:07 +08:00
    minyress
        83
    minyress  
       2020-05-07 16:34:50 +08:00
    无聊
    AngryMagikarp
        84
    AngryMagikarp  
       2020-05-07 16:42:09 +08:00
    @pursuer 张口就来系列。除非编译时候加了 CGO_ENABLED=0,否则编译的二进制依然有动态依赖。退一步说,谁是因为这个给 GO 好评的。
    kivensun
        85
    kivensun  
       2020-05-07 16:57:53 +08:00 via Android
    因为写前台,看到有人说必须学一门后台推荐 go,然后就学了
    pursuer
        86
    pursuer  
       2020-05-07 17:01:35 +08:00
    @AngryMagikarp #84 第一个回复就有人写了,"打包出来就一个可执行文件",有动态依赖是没错,但最多就依赖操作系统的部分核心库,也很少见到有人拿 Go 写动态库的。

    @xmge #82 确实时代变了,但是动态库还是有些的价值的,比如现在被广泛诟病的 electron,如果 electron 变成一个通用库,所有程序都用这一个库,不仅打包大小小很多,内存占用也可以变小。不过版本管理就会麻烦,各有取舍吧
    tyrantZhao
        87
    tyrantZhao  
       2020-05-07 17:03:21 +08:00
    好找工作。。。
    kylesean
        88
    kylesean  
       2020-05-07 17:08:50 +08:00
    Go 是 21 世纪的 C 语言,互联网时代的 C 语言!
    admirez
        89
    admirez  
       2020-05-07 17:10:18 +08:00
    因为我用 delphi
    walker2laok
        90
    walker2laok  
       2020-05-07 17:10:25 +08:00
    因为 PHP 已经不是世界上最好的语言了
    raincode
        91
    raincode  
       2020-05-07 17:13:53 +08:00
    因为我是 google 是我爹
    Felldeadbird
        92
    Felldeadbird  
       2020-05-07 17:25:05 +08:00
    大家都说 PHP 不好,我就稍微学了一点 GO 。
    hhyvs111
        93
    hhyvs111  
       2020-05-07 17:26:53 +08:00
    因为公司用 Go
    paoqi2048
        94
    paoqi2048  
       2020-05-07 17:28:43 +08:00
    害,品,你细品,go 它不香吗?
    SjwNo1
        95
    SjwNo1  
       2020-05-07 17:37:30 +08:00
    sunriz
        96
    sunriz  
       2020-05-07 17:37:58 +08:00
    犀利的瑞士军刀,morden c,同时没有 c++的复杂度包袱
    sunshinev
        97
    sunshinev  
       2020-05-07 17:40:28 +08:00
    go 就是要啥有啥
    clino
        98
    clino  
       2020-05-07 17:40:47 +08:00
    Go 的协程是不是最吸引人的?
    其实我没用过,但是感觉没有哪个其他语言在这方面能做得这么好.
    securityCoding
        99
    securityCoding  
       2020-05-07 17:41:33 +08:00
    简单明了,没有套娃
    micolore
        100
    micolore  
       2020-05-07 17:45:18 +08:00
    写完 rust hello world 之后,并了解一点语法之后,现在沉迷 go 不能自拔。
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1026 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 22:22 · PVG 06:22 · LAX 14:22 · JFK 17:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.