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

貌似 Golang 很火,想学一下

  •  
  •   chaomin1014 · 2018-09-10 10:35:53 +08:00 · 17585 次点击
    这是一个创建于 2027 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近看很多公众号什么的在说 Golang 值得一学,有没有技术大佬推荐学 GO 语言的渠道~没学过编程。有什么学习视频或书籍可以介绍吗?谢谢啦~

    140 条回复    2018-09-12 08:55:08 +08:00
    1  2  
    KeatingSmith
        1
    KeatingSmith  
       2018-09-10 10:38:26 +08:00 via iPhone   ❤️ 1
    书籍:Go 学习笔记 - 雨痕

    GitHub:Go 高级编程
    tourist2018
        2
    tourist2018  
       2018-09-10 10:41:18 +08:00
    没学过编程不建议以 Go 入门
    WuwuGin
        3
    WuwuGin  
       2018-09-10 10:43:40 +08:00 via Android
    >没学过编程
    建议买一本 c 程序设计语言开始学,不然你会什么都一知半解的。
    nullen
        4
    nullen  
       2018-09-10 10:46:58 +08:00
    同意 #2 #3
    PythonAnswer
        5
    PythonAnswer  
       2018-09-10 10:47:42 +08:00 via iPhone
    1 天就学会了。但是没机会用啊。哈哈。

    刷 api 搬砖干活的没机会用到。
    4u1kto
        6
    4u1kto  
       2018-09-10 10:47:47 +08:00   ❤️ 1
    人云亦云入坑的大部分都要后悔,
    要意识到:
    你学的不是一门语言,你学的是整个技术范围。
    orangeade
        7
    orangeade  
       2018-09-10 10:48:00 +08:00
    Go 语言相当于变形的 C 语言,先把 C 语言熟悉一下比较好
    chaomin1014
        8
    chaomin1014  
    OP
       2018-09-10 10:51:11 +08:00
    @KeatingSmith 感谢~
    chaomin1014
        9
    chaomin1014  
    OP
       2018-09-10 10:52:09 +08:00
    @PythonAnswer 一。。。一天就学会了吗-_-
    ghostwind
        10
    ghostwind  
       2018-09-10 10:53:21 +08:00
    err != nil
    PythonAnswer
        11
    PythonAnswer  
       2018-09-10 10:54:15 +08:00 via iPhone
    go 没什么花里胡哨的东西,你熟练 2 门别的,go 一天学会没问题。
    tt67wq
        12
    tt67wq  
       2018-09-10 10:55:12 +08:00
    这门语言我是入职了才现学的,语法平平淡淡,如果不是为了用,那估计学起来没啥兴趣
    chaomin1014
        13
    chaomin1014  
    OP
       2018-09-10 11:01:57 +08:00
    @4u1kto 那我是从 C 开始学起嘛
    @WuwuGin
    chaomin1014
        14
    chaomin1014  
    OP
       2018-09-10 11:02:29 +08:00
    @PythonAnswer 谢谢~
    hand515
        15
    hand515  
       2018-09-10 11:10:17 +08:00
    有编程基础,GO 入门挺简单
    ClutchBear
        16
    ClutchBear  
       2018-09-10 11:14:43 +08:00
    没有基础, 建议学 java
    各种成熟的 java 培训体系和视频.
    clino
        17
    clino  
       2018-09-10 11:16:12 +08:00
    虽然我没怎么用过 go,但是为什么学 go 要从 C 开始?
    不理解,直接学 go 会有什么障碍呢?
    yoke123
        18
    yoke123  
       2018-09-10 11:30:29 +08:00   ❤️ 2
    python 也火啊 听我的 学 php 吧
    wzw
        19
    wzw  
       2018-09-10 11:31:58 +08:00 via iPhone
    Go 好在哪里
    xinhangliu
        20
    xinhangliu  
       2018-09-10 11:32:30 +08:00 via Android
    Go 语法太难受了
    murmur
        21
    murmur  
       2018-09-10 11:33:47 +08:00
    golang 这名字你看一下啊
    lang 在日语里的话 g 是跟没有一样的
    所 golang 就是够烂
    懂了么
    --------------------------
    上面是吹牛逼
    真心不建议 go 入坑
    c 或者 c 样风格的语言 java 也好 php 也好 就算是 js 也好啊
    feverzsj
        22
    feverzsj  
       2018-09-10 11:33:54 +08:00
    哪里火了?建议不要浪费生命
    chaomin1014
        23
    chaomin1014  
    OP
       2018-09-10 11:39:31 +08:00
    @murmur 啊哈哈哈,够烂还行,那看来还是学一些老的语言
    @feverzsj 看好多公众号或者一些卖课的在讲
    chaomin1014
        24
    chaomin1014  
    OP
       2018-09-10 11:39:53 +08:00
    @yoke123 好嘞,学最好的语言(手动狗头)
    Quarter
        25
    Quarter  
       2018-09-10 11:40:13 +08:00 via iPhone
    感觉楼上有一些是强行黑
    kangkang
        26
    kangkang  
       2018-09-10 11:41:07 +08:00
    第一门语言不要学 GO...Golang 这个语言就是默认你已经懂了编程思想,我都无法想象没有编程经验的人学 Go 会有多痛苦...
    chaomin1014
        27
    chaomin1014  
    OP
       2018-09-10 11:41:50 +08:00
    @kangkang 昨天设置完环境变量就有点懵。。。
    uhayate
        28
    uhayate  
       2018-09-10 11:42:22 +08:00
    @kangkang 同意。+1
    Joyboo
        29
    Joyboo  
       2018-09-10 11:49:24 +08:00
    @murmur 一个名字也能黑,服你
    feverzsj
        30
    feverzsj  
       2018-09-10 12:04:41 +08:00
    @chaomin1014 你可以搜下 go 的工作,不仅数量少,工资稍微高点的基本都要求精通 c++,那你还不如直接找 c++的工作
    Marmot
        31
    Marmot  
       2018-09-10 12:05:30 +08:00
    这个语言就是给会 c 的人节约开发时间用的,没什么基础慎重考虑
    SuperMild
        32
    SuperMild  
       2018-09-10 12:07:00 +08:00
    如果打算练好内功,走见效慢但不容易走火入魔,可稳步升级的“道家正宗”路线,建议选学 C,再学 Java,再学其他。

    如果想见效快,剑走偏锋,用各种奇招制胜,可以从 JavaScipt, Python, PHP 之中随便选一个开始学。但很快你会发现自己的招数有很多漏洞,快速入门之后,想进一步提升就很缓慢,结果还是要回头补基础。

    至于 Go,零基础的话,很难自学,除非有人手把手教你,否则不建议从 Go 入门。
    OMGZui
        33
    OMGZui  
       2018-09-10 12:36:12 +08:00 via Android
    先学 c 或 java,再 go 吧
    x7395759
        34
    x7395759  
       2018-09-10 13:03:26 +08:00
    这个语言需要,先学 C,再学 C++,再学 Java。
    cholerae
        35
    cholerae  
       2018-09-10 13:27:56 +08:00
    Go 高级编程那书有点名不副实,不推荐
    chaomin1014
        36
    chaomin1014  
    OP
       2018-09-10 14:08:26 +08:00
    @SuperMild 好,谢谢老司机~
    PureWhiteWu
        37
    PureWhiteWu  
       2018-09-10 14:12:31 +08:00
    不要一上来学 go,等你有经验了在学。
    不然你学了反而不好。
    4u1kto
        38
    4u1kto  
       2018-09-10 14:19:15 +08:00
    @chaomin1014 你都学 go 了,还学什么 c 啊,家里有矿时间多啊,逮着一个能写东西先
    alphadog619
        39
    alphadog619  
       2018-09-10 14:44:47 +08:00
    go 语法确实难受
    brucewuio
        40
    brucewuio  
       2018-09-10 14:47:01 +08:00
    func (ptr *xxx) methodName(a int,b string) string{}

    怎么样 ? 不恶心的化 可以考虑 哈哈^_^
    marcong95
        41
    marcong95  
       2018-09-10 14:48:22 +08:00
    @murmur 日语里面 g 会发成グ,所以 golang 非要说是也是“够烂,咕”,你不觉得很萌么,这么萌的语言你怎么忍心黑它(滑稽
    reus
        42
    reus  
       2018-09-10 14:56:40 +08:00   ❤️ 1
    不需要学 C,也不需要学 java
    别听那些自己根本就不用的人瞎说
    hujianxin
        43
    hujianxin  
       2018-09-10 15:11:40 +08:00
    go 很简单的
    Tartarus
        44
    Tartarus  
       2018-09-10 15:19:38 +08:00   ❤️ 1
    行尾不用再写分号,是真幸福啊
    Yoock
        45
    Yoock  
       2018-09-10 15:35:43 +08:00 via iPhone
    不要听上面那些人瞎说,想学学就是了,工作很好找的
    xmge
        46
    xmge  
       2018-09-10 15:59:17 +08:00
    推荐笔记项目 https://github.com/xmge/gonote
    资源很全
    xichengh
        47
    xichengh  
       2018-09-10 16:00:46 +08:00
    为啥我喜欢这个语法-_-!
    Aoang
        48
    Aoang  
       2018-09-10 16:24:54 +08:00 via Android   ❤️ 3
    @clino 如果你没有编程底子,直接上手就是 Golang,你根本无法理解 Golang 为什么会是这样子的,你得花大量时间去看看其他编程语言,才能理解…

    相反,你本身就会 C、C++、Java 等其他的语言,然后再去学 Golang,这种情况反而比你会 Golang,想学其他编程语言快的多。
    Golang 就是一个进化版的 C,只不过和 C++ 不同,Golang 的进化有些局限(强制性)。

    比如,Golang 支持返回多值。
    你会 Java,那么再去学 Golang 就会觉得很好用。但是你会 Golang,再去学 Java 呢?这么鬼…为什么不能返回多值…
    xuanbg
        49
    xuanbg  
       2018-09-10 16:30:56 +08:00
    没有点 C/C++基础,学起来是比较累的。有基础的话,官方教程就足够了,三天包会。
    gamecreating
        50
    gamecreating  
       2018-09-10 16:32:18 +08:00
    正在实际项目中使用.....有些坑...不过总体还好
    d18
        51
    d18  
       2018-09-10 16:36:19 +08:00
    同意 48 楼,golang 简直就是 better c。
    学 golang,有没有 c 语言底子,感觉真的是不一样的。
    不懂 c,充其量不过是又学了一堆语法,和学 python,js 并没有什么区别。
    只有写过 c,知道 c 的痛点,c 轮子的匮乏,再去看 golang,才会明白 golang 为什么是这个样子,为什么这样设计,等等。
    clino
        52
    clino  
       2018-09-10 16:49:16 +08:00
    @Aoang 我的问题就是,我认为学 C 的成本比学 Golang 更高,上面让楼主先去学 C 再学 Go 的我觉得不如直接学 Go,不理解为什么会有这种建议...
    clino
        53
    clino  
       2018-09-10 16:51:11 +08:00
    @Aoang 作为第一个语言来学习的初学者要去思考语言为什么要设计成这样干嘛?先接受了用起来再说.
    你让人先学 C/Java 的意思是先弄个更难用的看看你就能理解 Go 了? 不理解这种思维...
    reus
        54
    reus  
       2018-09-10 16:51:49 +08:00
    @Aoang 学语言是为了用,不是为了理解它为什么是这个样子。难道你学 java,就能理解它为什么会是这样子?
    reus
        55
    reus  
       2018-09-10 16:53:55 +08:00
    推荐这本书: https://book.douban.com/subject/27044219/
    不用看其他的了。
    SuperMild
        56
    SuperMild  
       2018-09-10 17:04:43 +08:00
    @reus 这本书的内容少得可怜,就把基本语法说一遍,例子又少又过于简单,总体上还比不上官网上的内容(并且与官网内容有大量重叠)。如果本来就懂编程,学这本是够了,如果完全零基础,只学这本绝对处于非常迷惘的状态,最多写个判断闰年、或者 word count 简单版,已经是极限了。
    reus
        57
    reus  
       2018-09-10 17:13:26 +08:00
    @SuperMild 难道学 java 学 C,看完一本书就能学会更多?
    nitro123
        58
    nitro123  
       2018-09-10 17:26:51 +08:00
    官网指南不是挺好的?
    lin07hui
        59
    lin07hui  
       2018-09-10 17:28:18 +08:00
    如果语言 0 基础的话,建议直接学 go。如果只是模糊学过几门,没有精通两三门,则学 go 会非常困难。学习 go 建议先看官方指引 https://tour.go-zh.org/welcome/1
    0nlyy0u
        60
    0nlyy0u  
       2018-09-10 17:32:31 +08:00
    2 天就上手了,现在在做项目了
    ftu
        61
    ftu  
       2018-09-10 17:32:54 +08:00 via iPhone
    那还不如直接上 python 之后会越来越流行
    falcon05
        62
    falcon05  
       2018-09-10 18:04:52 +08:00 via iPhone
    哪有那么多破事,喜欢就学。
    blless
        63
    blless  
       2018-09-10 18:08:58 +08:00 via Android
    直接学吧,不懂再翻,本来就是一个循序渐进的过程,c 的基础看完黄花菜都凉了
    to2false
        64
    to2false  
       2018-09-10 18:19:19 +08:00
    @murmur 为什么不是直接读成够浪呢
    ShiyanlouCleaner
        65
    ShiyanlouCleaner  
       2018-09-10 18:26:40 +08:00
    这个打开网页就可以动手写代码练习啦,是入门的课程: https://www.shiyanlou.com/courses/11
    Doodlister
        66
    Doodlister  
       2018-09-10 19:04:53 +08:00 via Android
    @WuwuGin 看 K&R 那本书需要有数据结构基础
    mritd
        67
    mritd  
       2018-09-10 19:09:41 +08:00 via iPhone
    现在又到了 "php 是世界上最好的语言" 的时候,感觉一群 xx,楼主想学的话没必要非得从 c 开始(我怕你用力过猛),不论最好从一个后台编译型语言开始,直接学也无所谓,还有 整个容器领域大部分都是 go,剩下的不多说了
    xiaqi
        68
    xiaqi  
       2018-09-10 20:09:58 +08:00 via Android
    @brucewuio 以前吧,我是觉得挺难看的。不过现在嘛,我是觉得这语法挺好看的🌚🌚
    Aoang
        69
    Aoang  
       2018-09-10 20:13:35 +08:00 via Android
    @clino 因为 Golang 独立特行,所以才推荐先学其他语言。它的很多特性都是参照其他语言优缺点来制定的。

    先学 C 对于基础会理解的比较深刻,后面学习其他的语言都会快很多,而 Golang 本来就简单,有基础的人差不多一天就能上手。

    不先学 Golang 是因为它对于没有基础的人来说不够简单,上手也并不快,但却也不够底层,几乎毫无优势。Golang 的教程也有太多一带而过的概念,这些你让人去哪儿补?

    学习成本高不高是看你要学到什么程度,只要求上手,为什么不学 Python ?

    想学 Golang,先学 C。想入门,学 Python。
    Aoang
        70
    Aoang  
       2018-09-10 20:14:53 +08:00 via Android
    @reus 学一门语言是为了使用,但是编程这条路,省下来的,迟早要还的。
    jason94
        71
    jason94  
       2018-09-10 21:03:06 +08:00
    之前花了一周学完了,但是没时间用,过几天就忘光光了
    fleam
        72
    fleam  
       2018-09-10 21:21:25 +08:00 via iPhone
    学 go 不如学 c
    kran
        73
    kran  
       2018-09-10 21:37:25 +08:00
    想弄一个只有一个文件方便部署的 blog 程序, 所以就弄了一下 go, 没想到很快搞定了
    相信你学起来也会很容易的.
    ioven
        74
    ioven  
       2018-09-10 21:46:05 +08:00
    python 入门,为了学 go 又去啃了 c
    p1gd0g
        75
    p1gd0g  
       2018-09-10 22:00:59 +08:00
    来吧,rust。
    rickiey
        76
    rickiey  
       2018-09-10 22:26:38 +08:00 via Android
    当你会 c++时学其他语言很快的,我目前的需要技能树 c/c++,java,python,ruby,golang,js 主要用 java,ruby 其他不熟练,但是看得懂,能写个小工具
    clino
        77
    clino  
       2018-09-10 22:57:05 +08:00 via Android
    @Aoang 你要说学 python 成本比 go 低我认同,但是学 C Java 之类的成本比 go 低我就不同意了

    学 C 真的比 Go 简单?
    zjj19950716
        78
    zjj19950716  
       2018-09-10 23:42:24 +08:00 via iPhone
    @ioven 我也是 python 入的门 现在工作用 go 不过没看过 c
    monlite
        79
    monlite  
       2018-09-11 00:41:59 +08:00
    懂 C 的话,go 里面的一些概念确实比较容易理解,不过没有必要为了学 go 先去学 C。初学 go,推荐从 web 入手,推荐谢大的《 Go Web 编程》。官方的《 A Tour of Go 》,《 Go by Example 》也都是不错的 Hands-on 教程,深入的话可以看看雨痕的《 Go 学习笔记》
    twl007
        80
    twl007  
       2018-09-11 02:22:09 +08:00 via iPhone
    所以学 java 之前要先去学一下 c++ 然后才能理解为什么 java 这么设计解决了 c++的哪些问题这个意思?
    markx
        81
    markx  
       2018-09-11 02:22:31 +08:00
    如果没学过编程,是不是应该先学编程? 编程入门的话用 python 可能比较好吧?
    wspsxing
        82
    wspsxing  
       2018-09-11 04:25:22 +08:00 via Android
    2 出来了再学或许更好,doge
    hrong
        83
    hrong  
       2018-09-11 07:41:12 +08:00 via Android
    @Aoang golang 的怎么个不够底层?愿闻其详
    ioven
        84
    ioven  
       2018-09-11 08:25:40 +08:00
    @zjj19950716 《嗨翻 C 语言》翻一遍很快,然后《 The Way to Go 》,基本就可以开始敲代码了
    miniliuke
        85
    miniliuke  
       2018-09-11 08:26:16 +08:00 via Android
    我觉得应该从 java 入门,java 中规中矩的面对对象,又没有一堆花里胡哨的东西,库和内置库也很丰富......golang 的话太特立独行了,错误处理、接口和面对对象、多线程( go )通信( chan ),怎么想 golang 都不适合入门吧,入门还是选个 java 这样的吧
    88250
        86
    88250  
       2018-09-11 08:31:30 +08:00
    Go 边看边练 -《 Go 学习笔记》系列 https://hacpai.com/article/1437497122181
    artandlol
        87
    artandlol  
       2018-09-11 08:31:53 +08:00
    从 1 楼到 86 楼了 我已经学会了 golang 你们还在 bb
    realpg
        88
    realpg  
       2018-09-11 08:32:50 +08:00
    学个语言还要公众号还要教程么
    找手册 找点实例代码 再看看 github 别人写的简单项目 不就毁了
    zichen
        89
    zichen  
       2018-09-11 09:22:49 +08:00
    学语言主要还是看你的方向,go 的优势就是既能像 java 那样写业务,也能像 c 一样写一些底层基础服务或者中间件,如果你要是只写业务代码,java 就够了,毕竟写业务代码的工作比写底层基础服务和中间件的工作好找多了。另外有其他语言的基础或者工作经验的话,确实学起来更快。
    chengkai1853
        90
    chengkai1853  
       2018-09-11 09:23:45 +08:00
    头一次听说别人要学一门语言,叫别人先去学其他语言的。前期叫别人再去学另外一门,增加了复杂度不说。到时候两门都不熟悉,混乱。有些东西是可以在之后多写多看中学习到的!要把 C 理解到一定程度再学 go ?那还是放弃吧
    Aoang
        91
    Aoang  
       2018-09-11 10:06:50 +08:00 via Android
    @hrong 嵌入式。

    在学习使用上,垃圾回收、指针、闭包、运行机制等等。
    mengzhuo
        92
    mengzhuo  
       2018-09-11 10:13:09 +08:00
    @clino C 跟 Go 很像,毕竟是一拨人设计的
    Aoang
        93
    Aoang  
       2018-09-11 10:17:23 +08:00 via Android
    @clino 你并没看懂我的意思。

    C 的难度是公认的,Golang 的简单也是公认的。
    但是对于一个没有基础的人来说,学会了 Golang,本身编程就会遇到很多坑,但是只学习 Golang 坑更多。

    Golang 可以看作是 C 的填坑加强版,不学 C,切片、内存分配、数组等等有多少是 Golang 直接帮你解决的?没有基础的人要么需要花费时间去了解,要么被坑了花费更多的时间去填坑。
    SuperMild
        94
    SuperMild  
       2018-09-11 10:21:07 +08:00
    @chengkai1853 推荐先学别的语言,主要因为 LZ 是编程零基础,学语言当然可以直接学,但 LZ 的情况,其实更重要的是学编程,而不是单纯地学语言。作为零基础进入编程世界的第一门语言,Go 不是很合适。
    Keyes
        95
    Keyes  
       2018-09-11 10:23:32 +08:00 via iPhone
    @zichen 写业务真不咋地,复杂度上来外加人多以后还是 OO 比较不容易把代码搞乱
    myyou
        96
    myyou  
       2018-09-11 10:25:13 +08:00
    不要听楼上的人瞎说,根本不用先学 c 和 java,当然有其他语言经验更好,如果你喜欢 golang 就直接学。还有楼上推荐 js 的更是误人子弟,js 直到今天只不过是在一坨屎上添加一些语法糖而已,新手还是少碰。
    lrz0lrz
        97
    lrz0lrz  
       2018-09-11 10:27:17 +08:00
    别听楼上瞎说,学 golang 先学 C ?那么学 C 要不要先学汇编?
    kangkang
        98
    kangkang  
       2018-09-11 10:38:12 +08:00
    建议直接学 golang 的才是误人子弟,请问 golang 哪个教程有教你指针什么意思?都是默认你知道了好吗。
    这样楼主看到一堆指针怎么 make sense ?不能理解还能继续学?合着你们学语言用背的?
    myyou
        99
    myyou  
       2018-09-11 10:42:45 +08:00
    @kangkang golang 不是 c/c++ 没有指针,你完全可以把“*”和“&”理解为解包和引用。
    clino
        100
    clino  
       2018-09-11 10:44:37 +08:00
    @Aoang 我一直针对的是学 Go 要先学 C 的论调,这真是一个很奇怪的说法

    "Golang 可以看作是 C 的填坑加强版,不学 C,切片、内存分配、数组等等有多少是 Golang 直接帮你解决的?"
    确实看不懂,你的意思是学 Go 一定要了解"切片、内存分配、数组"是如何实现的?
    那学 Python 是不是要把 CPython 的实现了解一遍?
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5212 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 07:21 · PVG 15:21 · LAX 00:21 · JFK 03:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.