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

貌似 Golang 很火,想学一下

  •  
  •   chaomin1014 · Sep 10, 2018 · 19653 views
    This topic created in 2793 days ago, the information mentioned may be changed or developed.

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

    140 replies    2018-09-12 08:55:08 +08:00
    1  2  
    y835L9DyC5XD09kq
        101
    y835L9DyC5XD09kq  
       Sep 11, 2018
    @myyou 认真的吗? https://tour.golang.org/moretypes/1 这是官方教程,你看第一句就够了
    y835L9DyC5XD09kq
        102
    y835L9DyC5XD09kq  
       Sep 11, 2018
    @myyou 认真的吗? https://tour.golang 点 org/moretypes/1 这是官方教程,你看第一句就够了
    myyou
        103
    myyou  
       Sep 11, 2018
    @kangkang 认真的,指针只是个名字,学 golang 没必要再跑的 c 语言那边了解一遍这玩意儿
    specita
        104
    specita  
       Sep 11, 2018   ❤️ 1
    如果英文好,去官网上学,都有教程。如果英文吃力,那看中文教程,我一般的方式直接去京东搜名称,然后买销售最好的那一个
    yaidev
        105
    yaidev  
       Sep 11, 2018
    学 Golang 还得先学 C ?
    瞎扯,那我学 C 之前是不是得先学下汇编?
    学汇编之前是不是得先学会手写 0101 ?
    手写 0101 之前是不是还得先手工造一台计算机出来?
    AppxLite
        106
    AppxLite  
       Sep 11, 2018
    讨论半天似乎都没结果,楼主自己看着办吧
    Ediacaran
        107
    Ediacaran  
       Sep 11, 2018
    go 是用来写网络服务的 DSL,干别的不太合适
    ryan1991
        108
    ryan1991  
       Sep 11, 2018
    郝林的《 Go 并发编程实战》不错,他好像也在极客时间上开专栏了
    SuperMild
        109
    SuperMild  
       Sep 11, 2018   ❤️ 1
    @sunzhenyucn 不是说学 Go 要先学 C,而是楼主是零编程基础,对编程毫无概念的状态,入门的第一个语言,Go 不是很合适。

    一般入门编程几条路:从童子功开始练,C 是合适的语言,或者走快速见效的路,Python 之类的合适,或者走培训班面向找工作的路线,Java 入门也行。

    但 Go 入门,如果没有人手把手教,一个编程零基础的人靠自己看书看视频学,怎么看都不是一条好走的路。
    Aoang
        110
    Aoang  
       Sep 11, 2018 via Android
    @clino 你钻牛角尖了。

    零基础的人学的是编程,不是语言。
    非要学 Golang 入门,和骑驴找马有什么区别?学会了 Golang 就行了,不用学编程吗?

    你不了解是如何实现的,那你怎么知道该在什么时候用什么比较好?

    切片数组这些都是很基础的东西,什么都不了解,还谈什么把业务逻辑抽象化?

    至于看不看源码,那是你学不学的问题。
    myyou
        111
    myyou  
       Sep 11, 2018
    @SuperMild golang 相比 c,java 概念很少,新手最怕被各种概念搞定焦头烂额,我反而觉得很适合零基础的人入门。
    clino
        112
    clino  
       Sep 11, 2018
    @Aoang 作为一个初学者,学切片数组会理解会用了就行了,为什么要去学 C 来学切片数组?C 里面又没有切片.

    熟悉了以后要再学为什么这么设计,到底是怎么实现的,那时候已经不是初学者,已经比较深入了
    我是从初学者角度出发,我在这里看到的这种奇怪论调根本不是从初学者角度出发,而是本身已经比较高阶的开发者的想当然
    shm7
        113
    shm7  
       Sep 11, 2018 via iPhone
    试试 julia
    SuperMild
        114
    SuperMild  
       Sep 11, 2018
    @myyou Go 入门也不是不行,我上面几次回复,都有注意提到一点 “有没有人手把手教”。每种语言都有自己的特点,而写教程的人会被这些特点影响,Go 的教程我看过很多,基本上都是假设读者已经有编程经验,对很多编程入门需要了解的东西都不讲的。而 C、Python, Java 之类的教程则不一样了,大量入门知识,大量优秀入门教程(注意是编程入门,不是语言入门)。

    Go 有优秀的语言入门教程,但编程入门资料就非常缺乏了。
    myyou
        115
    myyou  
       Sep 11, 2018
    @shm7 Julia 目前也就是科研人员在用
    shm7
        116
    shm7  
       Sep 11, 2018 via iPhone
    @myyou ml 了解一下
    Aoang
        117
    Aoang  
       Sep 11, 2018 via Android
    @clino 请问你使用 Golang 吗?对 Golang 的了解程度如何?
    如果你深入了解过你就能明白 Golang 为什么不适合零基础的人入门了。

    至于会用和理解,这根本就不存在的。

    例,切片原理。
    Golang 切片的结构是指向数据的指针,长度和容量。复制切片或者在切片上创建新切片,切片中的指针都指向相同数据内存区域。
    没学过 C,指针是什么?长度和容量怎么理解和实现?

    Golang 的切片,你完全就可以在 C 上实现一个,因为 C 没有,你得自己造轮子。当你理解了切片原理,才能知道该怎么用,这样才能避免在开发的时候出现错误。
    y835L9DyC5XD09kq
        118
    y835L9DyC5XD09kq  
       Sep 11, 2018
    拿 golang 和 python 类比的明显没有深度用过 golang...起码到目前为止 golang 这门语言还是需要有 hack 精神和能力的,想把它当 python 或者 java 那样的黑盒用是不可能的
    myyou
        119
    myyou  
       Sep 11, 2018
    @SuperMild 的确,golang 太新,不像其他语言有那么多的教程,不过也再逐渐改善。
    waterlaw
        120
    waterlaw  
       Sep 11, 2018 via Android
    楼上讲的都有点道理。 编程本质上还是逃离不了处理器指令, 内存,io, 异常处理等等, 如果是学习使用的话, 可以先了解一门语言的基本语法和概念, 遇到问题再去补相关知识, 计算机编程从来不是会用一门语言就会的, 要多推敲代码, 减少内存占用加速 io 操作什么的, 才是重点。 楼主计算机基础不是很好的话推荐一本书给你,《 深入理解计算机系统》, 可能还是要学下 c 语言, 毕竟 c 语言是除了汇编外离操作系统最近的语言, 而且语法也简单, 对你学 go 也有帮助。
    abusizhishen
        121
    abusizhishen  
       Sep 11, 2018 via Android
    go 语言简单,学习的过程最好是工作驱动,否则没有应用场景,也很快会忘得
    abusizhishen
        122
    abusizhishen  
       Sep 11, 2018 via Android
    极客时间,跟郝林学 go
    dingyaguang117
        123
    dingyaguang117  
       Sep 11, 2018
    C 上学的时候不是都学过么~
    gowk
        124
    gowk  
       Sep 11, 2018
    等 Go 2 出来再学不迟,引入了泛型和改进的错误处理机制后,一大波库都会根据泛型重构,那时 Go 的生态会更好
    gowk
        125
    gowk  
       Sep 11, 2018
    @Aoang 深得我心
    clino
        126
    clino  
       Sep 11, 2018
    @Aoang
    "没学过 C,指针是什么?长度和容量怎么理解和实现?"
    你这个是说要拿 Golang 里切片的 C 语言实现去尝试理解切片对吧?
    意思是如果没学过 C 不从切片的实现去理解,而直接在 Golang 里实践,从而在脑子里建构对切片的理解是无法做到的?或者说比先学 C 的指针数组再学这个成本更高?

    我没办法验证这个想法因为我原来就会 C,但我认为没学过 C 也是能理解的,而且成本比先去学 C 再来理解成本更低
    Aoang
        127
    Aoang  
       Sep 11, 2018 via Android
    @clino Golang 自带切片,且没有指针运算,你怎么实现?
    在大脑构建对切片的理解,你确定零基础的人能做到?
    完全就是不存在的。

    话题的对象是零基础的人,你零基础的时候能直接理解切片?

    C 之所以难,很大一部分程度就是在指针上。Golang 的指针没有指针运算,没有其他语言的基础,想理解切片,对于零基础的人有多吃力?

    目前招聘 Golang 的企业都只招聘中级、高级,因为几乎没有初级。都是 C/C++、Java、Python 等等其他语言转过去的。
    编程入门首选 C,兴趣爱好选 Python,谋生之计选 Java。Golang,对于现在来说,有编程基础的人一天上手,没编程基础的人上手再快,也会掉坑里。
    reus
        128
    reus  
       Sep 11, 2018
    @Ediacaran DSL? go 编译器就是 go 写的,哪个 DSL 能自举的?还有一堆存储和基础服务的软件你不知道?
    reus
        129
    reus  
       Sep 11, 2018
    @gowk 要学现在就学,go2 都不知道要几年后了。
    clino
        130
    clino  
       Sep 11, 2018
    @Aoang 举个例子,参考这篇文章我就能理解 Golang 里的切片而不用 C 的知识
    https://segmentfault.com/a/1190000006056800
    这就是我说的就在 Golang 中实践来构建对于切片的理解
    clino
        131
    clino  
       Sep 11, 2018
    @Aoang "编程入门首选 C,兴趣爱好选 Python,谋生之计选 Java。Golang"
    我一直没有讨论语言本身的学习成本,我一直针对的是学 Golang 必须要先学 C 这种论调

    另外我认为编程入门也可以用 Python,感觉你一定要理解到底层的具体实现才能叫"入门"?那么那些从 Scratch 开始的岂不是更奇怪?
    Aoang
        132
    Aoang  
       Sep 11, 2018 via Android
    @clino 你确定零基础的人看得明白?更多的是一知半解吧。且这篇文章讲的并不是基础。

    没谁说学 Golang 必须先学 C,话题对象是零基础的人,话题是入门编程,不是学习某一种语言。

    至于是不是需要了解底层,我说的是基础,而不是底层。当解决一个问题可以使用多种方式的时候,最先使用的是自己熟悉的,但是自己熟悉的并不是最高效率的时候,是不是要了解那种方式效率更高?你不了解基础怎么去判断?凭借自己的感觉和经验?
    ranwu
        133
    ranwu  
       Sep 11, 2018
    在 hackernews 上看到一篇文章介绍用 go 写的微服务,reddit 的广告系统,说响应时间从 90ms 提高到 10ms,感觉很牛逼。可以从框架入手,写个实际的应用,然后再看源码·=·
    clino
        134
    clino  
       Sep 11, 2018
    @Aoang 你说的理解必须理解到底层? 比如 python 的 dict 我认为了解其特性会使用就叫入门了,你认为这不叫入门叫一知半解,必须了解其实现细节才行? 但是 C 里面没有 dict 没办法从 C 这里学起怎么办?
    这个问题就和你说的切片一样,如果我只用 Golang 掌握其概念,能使用,我认为这就足够入门能利用其做不少开发了.
    Aoang
        135
    Aoang  
       Sep 11, 2018 via Android
    @clino Golang 是独立特行的,能使用不代表会使用。

    看了看你的 github,听别人说千遍万遍,不如自己亲身体验。

    Golang 好处是多,坏处也有。非要说 Golang 适合入门编程,你去写一个项目就能明白为什么本帖那么多 Gopher 的固执了。
    clino
        136
    clino  
       Sep 11, 2018
    @Aoang 要我说多少遍,我一直没有说"Golang 适合入门编程"这个观点

    我一直觉得奇怪的是要学 Golang 非要先学 C 的这种奇谈怪论

    如果你会 C/C++,那么是有助于你理解 Golang 没错,但是如果就要学 Golang,完全可以不会 C/C++就能入门并很好的使用,这样的成本比去学一边 C/C++/Java 再来学 Golang 更低,这是我的完整看法,你如果要批驳我请针对完整看法.
    Aoang
        137
    Aoang  
       Sep 11, 2018 via Android
    @clino 是不是奇谈怪论你怎么不去试试?看看有多少人是直接零基础上手 Golang 的?

    我回复的是楼主,对象是零基础的人,目的是入门编程。你没弄明白对象和目标有什么好说的。

    有编程基础的人一天上手,没编程基础的你怎么学?有 Golang 的入门编程书和教程吗?有的只是入门 Golang 这门语言,没有入门编程。

    至于学习成本,弄明白对象和目标了么?弄明白对象和目标了,你首先就应该知道一点,基础很重要。别扯什么能用就行,打个 hello world 和写个 TCP server 能一样吗?
    你去问问,先学基础再慢慢进阶到一定程度快,还是先丢下基础以后慢慢补快。
    myyou
        138
    myyou  
       Sep 11, 2018
    @Aoang golang 是新语言,肯定没有多少人选择零基础入门 golang 啊。楼主也只是想学学 golang 而已,还有你说的哪些编程基础,没有一样能学。而且学习一门编程语言的过程中也会涉及到相关基础。你太绝对了,而且是忽略事实的绝对。
    finalsatan
        139
    finalsatan  
       Sep 11, 2018
    推荐一下雨痕大神的 go 语言学习笔记 吧
    JokerHuang
        140
    JokerHuang  
       Sep 12, 2018
    @marcong95 我真的不得不给你点个赞... 咕
    1  2  
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2358 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 77ms · UTC 04:54 · PVG 12:54 · LAX 21:54 · JFK 00:54
    ♥ Do have faith in what you're doing.