• 请不要在回答技术问题时复制粘贴 AI 生成的内容
2ME
V2EX  ›  程序员

关于 GO 语言的入门学习 求解答

  •  
  •   2ME · Aug 29, 2017 · 8689 views
    This topic created in 3208 days ago, the information mentioned may be changed or developed.

    目前做 PHP 工作就是拧螺丝 ..

    拧完螺丝后还是有些富余时间的 想学习一下 GO

    希望能顺便补一下 CS 基础 自己基础比较差

    目前 GO 吸引我的特性主要是并发支持比较好

    最近工作为了脚本效率需要接触一些并发编程 然后遇到比较多坑 锁机制 内存泄漏

    可能是自己水平确实太差 = =

    所以想借着学习一门新的语言的新鲜感顺便恶补基础知识 提升下自己

    也想接触到 PHP 编程一般接触不到的东西

    之前没接触过 C 语言 所以对 GO 的一些东西比较难理解

    所以想知道如何系统性的学习 GO

    语法还是比较好理解的 主要不是很懂 GO 的结构,关于包的一些东西 似乎和 composer 的 package 还是有很大区别的

    不知道如何开始敲代码入手去做一些东西实践学习

    41 replies    2018-09-24 17:59:09 +08:00
    zjsxwc
        1
    zjsxwc  
       Aug 29, 2017   ❤️ 1
    go 语法太简单,有 ide 自动提示辅助的时候,不用怎么学就能写代码了。
    Immortal
        2
    Immortal  
       Aug 29, 2017   ❤️ 1
    go 语言实战 go 语言学习编辑 算对我帮助不少的书
    同 php 转
    ecofast
        3
    ecofast  
       Aug 29, 2017   ❤️ 1
    SuperMild
        4
    SuperMild  
       Aug 29, 2017   ❤️ 2
    - https://play.golang.org/
    > 学完这个就已经具备基础知识

    - https://golang.org/doc/code.html
    > Go 的包非常简单,全部项目都在同一个目录里( gopath ),刚开始没有必要自己搞特殊目录。

    - http://golang.org/doc/effective_go.html
    > 这个值得反复多看

    - http://exercism.io/languages/go/about
    > 这个练手找感觉,有语言风格提示可以养成好习惯,看别人的答案有新灵感。
    WildCat
        5
    WildCat  
       Aug 29, 2017   ❤️ 5
    非常不认同“ Go 语法简单,有 IDE 提示不用学”这种观点,私以为以下几个点特别需要注意:
    1. interface
    2. 并发编程的思想(尤其从 PHP 转过来的)、锁、channel 等
    3. 标准库

    学习资料只推荐一本书:Go 程序设计语言(英文版),艾伦 A.A.多诺万 (Alan A.A.Donovan)、 布莱恩 W.柯尼汉 (Brian W.Kemighan)
    从 Amazon 来看,中文译本质量极差。

    其他国人的书请慎重购买,尤其是某 CTO 和某框架作者的。
    PythonAnswer
        6
    PythonAnswer  
       Aug 29, 2017   ❤️ 1
    py 写惯了,真不想写 go。。懒病是不是要电才行?
    simple2025
        7
    simple2025  
       Aug 29, 2017 via iPhone   ❤️ 2
    @PythonAnswer 所以我学 js 去了,前端 py 做不了
    goodspb
        8
    goodspb  
       Aug 29, 2017   ❤️ 2
    关键还是基础吧,C 圣经,Unix 编程圣经,网络圣经其实都是必须掌握的,否则就算你学懂了 Go 的语法,又能拿它开发什么样的应用呢?(同 PHP 程序员..
    Death
        9
    Death  
       Aug 29, 2017 via Android
    @WildCat
    Go 语言圣经的话,社区汉化版的质量感觉还可以
    2ME
        10
    2ME  
    OP
       Aug 29, 2017
    @WildCat interface 概念似乎和 PHP 的 interface 没什么区别

    主要是为了学习关于并发编程的思想,锁 等相关的一些知识
    2ME
        11
    2ME  
    OP
       Aug 29, 2017
    @goodspb 已经意识到了关键是基础 所以想借着学习一门新的语言的新鲜感补充基础 文中有提 .. 主要是现在单独去看基础书实在看不下去.. 犯困
    2ME
        12
    2ME  
    OP
       Aug 29, 2017
    @PythonAnswer 我也是懒癌晚期 学 GO 这个想法几个月前就有了 拖到现在感觉不学点东西不行了.. 每天拧螺丝学不到什么 自己还不上进 感觉要死
    wweir
        13
    wweir  
       Aug 29, 2017 via Android
    @WildCat 国人的书还是有一个不错的
    雨痕的读书笔记
    mikulch
        14
    mikulch  
       Aug 29, 2017
    @WildCat 中文译本有幸看过
    实在是太他妈的烂了。
    eyp82
        15
    eyp82  
       Aug 29, 2017
    Go 语言的精髓在于那个 goroutine+channel, 虽说解决了大部分的并发问题, 但还是要做同步的
    EricJia
        16
    EricJia  
       Aug 29, 2017
    g8287694
        17
    g8287694  
       Aug 29, 2017
    和我想的差不多,同 php 程序员
    jaylee77
        18
    jaylee77  
       Aug 29, 2017
    推荐 《 Go In Action 》 看了这本书就并发编程就没什么问题了
    ETiV
        20
    ETiV  
       Aug 29, 2017 via iPhone
    我接触过一个线上项目,用的 go

    感觉在真正能上线的项目里,最致命的是 GitHub 上那些良莠不齐的库……

    比如某个 Orm,初始化时的主键为 0、nil
    在 Save 的时候,执行的 mysql 语句,并没有“ where id=0 ”,也没有“ limit 1 ”

    然后整张表就这么被 update 了😂
    goodspb
        21
    goodspb  
       Aug 29, 2017
    @2ME 明白了,其实是想找练手吧?假如是想深入学习服务器开发的,用 Go 开发反而没有帮助,因为绝大多数都是已经将底层封装好的类库了。想了解系统知识的话,建议还是 C/C++ -> PHP 扩展 -> Unix 编程 这线路吧。(例如先读懂 swoole , 从一个 php 开发者角度分析你的需求)
    cokyhe
        22
    cokyhe  
       Aug 29, 2017
    这个可以有
    mengzhuo
        23
    mengzhuo  
       Aug 29, 2017
    工作是扭螺丝,你以为换个螺丝刀就不是扭螺丝了么~
    2ME
        24
    2ME  
    OP
       Aug 29, 2017
    @mengzhuo 是为了更好的拧螺丝阿.. 现在螺丝刀不顺手还要折腾螺丝刀 不如换个更好用的螺丝刀解决问题= =
    itfanr
        25
    itfanr  
       Aug 29, 2017 via Android
    @WildCat 雨痕的和郝林的不错
    wwek
        26
    wwek  
       Aug 29, 2017
    https://gobyexample.com/
    Go by Example is a hands-on introduction to Go using annotated example programs. Check out the first example or browse the full list below.

    把这个多撸几遍
    wwek
        27
    wwek  
       Aug 29, 2017
    @ETiV 是哪个 ORM
    kotokz
        28
    kotokz  
       Aug 29, 2017
    @WildCat
    Brian 的书绝对值得推荐,go 确实看这一本就够了
    carlonelong
        29
    carlonelong  
       Aug 29, 2017
    还是学学 C 吧,不然指针什么的都没概念怎么深入玩 go
    pubby
        30
    pubby  
       Aug 29, 2017 via Android
    @ETiV
    @wwek 应该是 gorm 哈哈
    ETiV
        31
    ETiV  
       Aug 29, 2017   ❤️ 1
    @wwek

    http://jinzhu.me/gorm/crud.html#update


    // Update with struct only works with none zero values, or use map[string]interface{}
    db.Model(User{}).Updates(User{Name: "hello", Age: 18})
    //// UPDATE users SET name='hello', age=18;
    pubby
        32
    pubby  
       Aug 29, 2017 via Android
    @ETiV 所以没有这个都不敢上线的

    // 确保 update/delete 时一定要有 where 条件
    db.BlockGlobalUpdate(true)
    chuhemiao
        33
    chuhemiao  
       Aug 29, 2017
    Go 语言学习笔记=》雨痕
    ETiV
        34
    ETiV  
       Aug 30, 2017
    @pubby

    ……前面文档里并没有

    Google 搜这方法,一共 5 条结果
    还包括了这帖子……

    专坑新人……
    xrlin
        35
    xrlin  
       Aug 30, 2017
    @ETiV 我刚发现这个坑......
    HarrisonZ
        36
    HarrisonZ  
       Aug 30, 2017
    @ETiV gorm 用 save 的时候不是先 find 出来对象,或者在主键都有值的情况下才用 save 吗,初始化新值难道不是用 craete
    Erskine
        37
    Erskine  
       Aug 30, 2017 via Android
    代码撸起来,不然永远不会知道原来还有这回事
    windyboy
        38
    windyboy  
       Aug 30, 2017
    我不明白为什么要用 ORM 这些东西
    直接写 SQL 不好吗?
    lepig
        39
    lepig  
       Apr 3, 2018
    @WildCat 挖坟。Go 程序设计我也看评价说翻译的很烂。但是原版看不懂。退而求其次的话 还有别的中文书籍推荐吗?同样 php 入 Go 坑
    PyCode
        40
    PyCode  
       Sep 23, 2018
    @goodspb 网络圣洁是哪本书啊?
    goodspb
        41
    goodspb  
       Sep 24, 2018
    @PyCode UNIX 网络编程,有卷一二三,可以先看卷一。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1575 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 110ms · UTC 16:45 · PVG 00:45 · LAX 09:45 · JFK 12:45
    ♥ Do have faith in what you're doing.