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

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

  •  
  •   2ME · 2017-08-29 11:25:08 +08:00 · 5789 次点击
    这是一个创建于 659 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

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

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

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

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

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

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

    41 回复  |  直到 2018-09-24 17:59:09 +08:00
        1
    zjsxwc   2017-08-29 11:31:22 +08:00   ♥ 1
    go 语法太简单,有 ide 自动提示辅助的时候,不用怎么学就能写代码了。
        2
    Immortal   2017-08-29 11:32:03 +08:00   ♥ 1
    go 语言实战 go 语言学习编辑 算对我帮助不少的书
    同 php 转
        3
    ecofast   2017-08-29 11:32:28 +08:00   ♥ 1
        4
    SuperMild   2017-08-29 11:38:15 +08:00   ♥ 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
    > 这个练手找感觉,有语言风格提示可以养成好习惯,看别人的答案有新灵感。
        5
    WildCat   2017-08-29 11:40:04 +08:00   ♥ 5
    非常不认同“ Go 语法简单,有 IDE 提示不用学”这种观点,私以为以下几个点特别需要注意:
    1. interface
    2. 并发编程的思想(尤其从 PHP 转过来的)、锁、channel 等
    3. 标准库

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

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

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

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

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

    然后整张表就这么被 update 了😂
        21
    goodspb   2017-08-29 15:11:05 +08:00
    @2ME 明白了,其实是想找练手吧?假如是想深入学习服务器开发的,用 Go 开发反而没有帮助,因为绝大多数都是已经将底层封装好的类库了。想了解系统知识的话,建议还是 C/C++ -> PHP 扩展 -> Unix 编程 这线路吧。(例如先读懂 swoole , 从一个 php 开发者角度分析你的需求)
        22
    cokyhe   2017-08-29 16:26:57 +08:00
    这个可以有
        23
    mengzhuo   2017-08-29 17:21:47 +08:00
    工作是扭螺丝,你以为换个螺丝刀就不是扭螺丝了么~
        24
    2ME   2017-08-29 17:38:16 +08:00
    @mengzhuo 是为了更好的拧螺丝阿.. 现在螺丝刀不顺手还要折腾螺丝刀 不如换个更好用的螺丝刀解决问题= =
        25
    itfanr   2017-08-29 20:58:01 +08:00 via Android
    @WildCat 雨痕的和郝林的不错
        26
    wwek   2017-08-29 21:31:57 +08:00
    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.

    把这个多撸几遍
        27
    wwek   2017-08-29 21:33:08 +08:00
    @ETiV 是哪个 ORM
        28
    kotokz   2017-08-29 21:44:48 +08:00
    @WildCat
    Brian 的书绝对值得推荐,go 确实看这一本就够了
        29
    carlonelong   2017-08-29 21:46:02 +08:00
    还是学学 C 吧,不然指针什么的都没概念怎么深入玩 go
        30
    pubby   2017-08-29 22:58:34 +08:00 via Android
    @ETiV
    @wwek 应该是 gorm 哈哈
        31
    ETiV   2017-08-29 23:04:31 +08:00   ♥ 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;
        32
    pubby   2017-08-29 23:20:36 +08:00 via Android
    @ETiV 所以没有这个都不敢上线的

    // 确保 update/delete 时一定要有 where 条件
    db.BlockGlobalUpdate(true)
        33
    chuhemiao   2017-08-29 23:22:20 +08:00
    Go 语言学习笔记=》雨痕
        34
    ETiV   2017-08-30 00:21:30 +08:00
    @pubby

    ……前面文档里并没有

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

    专坑新人……
        35
    xrlin   2017-08-30 00:43:45 +08:00
    @ETiV 我刚发现这个坑......
        36
    HarrisonZ   2017-08-30 14:53:38 +08:00
    @ETiV gorm 用 save 的时候不是先 find 出来对象,或者在主键都有值的情况下才用 save 吗,初始化新值难道不是用 craete
        37
    iRiven   2017-08-30 16:05:27 +08:00 via Android
    代码撸起来,不然永远不会知道原来还有这回事
        38
    windyboy   2017-08-30 17:07:48 +08:00
    我不明白为什么要用 ORM 这些东西
    直接写 SQL 不好吗?
        39
    lepig   2018-04-03 22:37:33 +08:00
    @WildCat 挖坟。Go 程序设计我也看评价说翻译的很烂。但是原版看不懂。退而求其次的话 还有别的中文书籍推荐吗?同样 php 入 Go 坑
        40
    PyCode   269 天前
    @goodspb 网络圣洁是哪本书啊?
        41
    goodspb   268 天前
    @PyCode UNIX 网络编程,有卷一二三,可以先看卷一。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1621 人在线   最高记录 5043   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 22ms · UTC 16:49 · PVG 00:49 · LAX 09:49 · JFK 12:49
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1