V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
zhuoyue100
V2EX  ›  Go 编程语言

怎么提升 golang 开发水平

  •  1
     
  •   zhuoyue100 · 2023-09-14 16:37:43 +08:00 · 4062 次点击
    这是一个创建于 468 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目前工作中很少用到 golang 开发,之前用 gin 写过一些 api, 但是感觉都是皮毛,看源码又看不进去,那么现在该如何深入学好 Go 呢

    26 条回复    2023-10-21 17:37:23 +08:00
    rongpx95
        1
    rongpx95  
       2023-09-14 17:12:49 +08:00
    从这里开始: https://go.dev/doc/
    z1645444
        2
    z1645444  
       2023-09-14 19:52:10 +08:00
    就从看源码开始吧,他什么功能我怎么实现,checkout 老 log 他原来怎么实现对比现在怎么实现,我也是只用 Gin 写过 API ,也仿造 fzf 做过个小 CLI
    wkong
        3
    wkong  
       2023-09-14 19:54:12 +08:00
    跟我来做开源 😊
    BeautifulSoap
        4
    BeautifulSoap  
       2023-09-14 19:59:04 +08:00 via Android
    实际找个项目去做
    很多细节和知识只看代码不亲自动手是没法真的领会为什么要这么作的
    yuancoder
        5
    yuancoder  
       2023-09-14 20:13:25 +08:00
    多写项目吧,这玩意没法速成
    keepmovingg
        6
    keepmovingg  
       2023-09-14 20:42:55 +08:00
    @wkong 大佬,求带
    securityCoding
        7
    securityCoding  
       2023-09-14 20:46:58 +08:00
    找个开源把源码搞懂,自己重新写一遍就差不多了
    kingjpa
        8
    kingjpa  
       2023-09-14 22:09:42 +08:00
    就是多写,多重构, 虽然我 go 已经忘得差不多了
    gogogo1203
        9
    gogogo1203  
       2023-09-14 23:01:01 +08:00
    https://github.com/ardanlabs/service 最强的 go 教程的 repo ,课程很贵,repo 免费。middleware, error 处理方式,整个 app 的架构,数据库的 versioning 到 docker 部署。虽然我有一段时间没有写 go 后台了, 但是这个 repo 是真的很惊艳。主要它易懂,所有 engineering 的决定都让我觉得太合理了。
    gogogo1203
        10
    gogogo1203  
       2023-09-14 23:04:00 +08:00
    William Kennedy (Bill) 是 Go 语言实战的作者之一.这本书应该是 国内大家接触到的第一本 go 教程。
    mryaocom
        11
    mryaocom  
       2023-09-14 23:11:19 +08:00
    我也想转到 go 但是感觉学几天就想放弃了, 一直原地踏步, 有没有大佬需要小弟 我可以打打下手的 目前从事 python 干不下去了,
    dayeye2006199
        12
    dayeye2006199  
       2023-09-15 04:47:10 +08:00 via Android
    MIT 6.824 ,go 和分布式系统天然契合
    vultr
        13
    vultr  
       2023-09-15 08:51:10 +08:00
    imianba2zz
        14
    imianba2zz  
       2023-09-15 09:16:34 +08:00
    @gogogo1203 说的这个真的比较棒,其实 b 站有人搬运了这个课程。还有个最简单的办法就是造轮子,写教程然后给别人讲出来
    Lighthughjiajin
        15
    Lighthughjiajin  
       2023-09-15 09:23:47 +08:00
    @mryaocom python 咋干不下去了。
    mryaocom
        16
    mryaocom  
       2023-09-15 09:45:49 +08:00
    老在写一个东西 其他的都不会了 @Lighthughjiajin
    zhangzEric
        17
    zhangzEric  
       2023-09-15 10:04:40 +08:00 via iPhone
    @gogogo1203 之前看过,讲的确实很好,跟着课程自己手敲一遍,收获不少~ B 站有人搬运课程,虽然还是希望大家支持正版
    Akiya
        18
    Akiya  
       2023-09-15 10:09:00 +08:00
    @dayeye2006199 其实这个课程跟 go 关系都不是很大了,主要是学习分布式系统,当然我一直都不是很建议用语言来作为自己的发展方向而是单纯的工具,所以分布式是一个很好的切入点
    zhuoyue100
        19
    zhuoyue100  
    OP
       2023-09-15 11:58:44 +08:00
    @wkong 大佬带我学习一下吧,最近空闲时间也蛮多的
    wkong
        20
    wkong  
       2023-09-15 13:33:23 +08:00
    @zhuoyue100 可以先从这个简单点的项目看起。https://github.com/WuKongIM/WuKongIM
    dayeye2006199
        21
    dayeye2006199  
       2023-09-15 14:15:27 +08:00
    @Akiya 分布式系统是语言无关的。但是做完这些 lab 你会发觉 go 的强项是什么,为啥好多做 infra 的喜欢用 go 写
    japeth
        22
    japeth  
       2023-09-15 17:15:54 +08:00
    @gogogo1203 好贵 🤣
    CC11001100
        23
    CC11001100  
       2023-09-17 11:37:01 +08:00
    多折腾多造轮子多写代码,没啥速成的法子吧,就是要多写唯手熟尔....

    如果不知道写啥,我创建了一个组织专门用来造 Golang 的各种轮子练手,里面都是各种比较独立量级不大适合练手的 idea ,老哥有兴趣可以一起来撸代码,互相讨论技术方案、review 代码啥的:
    https://github.com/golang-infrastructure
    zhuoyue100
        24
    zhuoyue100  
    OP
       2023-09-18 15:03:51 +08:00
    @wkong 好的,我现在拉下来
    gogogo1203
        25
    gogogo1203  
       2023-09-20 01:38:30 +08:00
    @japeth 你看一下今天 go 区为了要给 unmarshl 吵了这么久, 就知道这个课程的价值。 不买也直接按照里面的 pattern 写 curd 。 各种舒服。
    qloog
        26
    qloog  
       2023-10-21 17:37:23 +08:00
    可以采取以下一些方法:

    1. 学习 Go 的基础知识:
    - 熟悉 Go 的基本语法和语言特性,包括变量、函数、数据类型、控制结构等。
    - 了解 Go 的并发模型,包括协程( goroutine )和通道( channel )。

    2. 阅读 Go 官方文档:
    - Go 的官方文档是一个宝贵的学习资源,包括语言规范、标准库文档和示例代码。深入了解标准库将有助于你更好地利用现有的工具和库。

    3. 解决实际问题:
    - 尝试解决实际的编程问题,这可以包括构建小型应用程序、工具或参与开源项目。通过实际项目,你将获得宝贵的经验。

    4. 学习并发编程:
    - Go 是一门擅长并发编程的语言,因此深入研究并发编程技术,包括协程、通道、锁等,对提升 Go 开发水平至关重要。

    5. 阅读优秀的 Go 代码:
    - 阅读其他人写的高质量 Go 代码,学习他们的最佳实践和设计模式。

    6. 学习测试和性能优化:
    - 学习如何编写有效的测试用例以确保代码的质量和稳定性。
    - 掌握性能优化技术,了解如何使用 Go 的性能分析工具来改进代码性能。

    7. 参加 Go 社区:
    - 参与 Go 社区,加入论坛或社交媒体群体,与其他 Go 开发者分享经验、提问问题并讨论新技术。

    8. 掌握 Go 工具链:
    - 学习使用 Go 的工具链,包括`go build`、`go test`、`go get`、`go mod`等,以更有效地管理项目和依赖。

    9. 持续学习:
    - Go 是一门不断发展的语言,不断学习新的语言特性和最佳实践,以跟上 Go 生态系统的变化。

    10. 开发项目经验:
    - 参与实际项目开发,无论是个人项目还是团队项目,都能够锻炼你的 Go 开发技能。

    需要慢慢积累,做项目相对还是提升比较快的,在做的过程中,你会碰到各种各样的问题,通过解决这些问问题自然而然就会提升。比如一些基础库:日志、缓存、数据库,消息队列(可以思考如何更好的进行封装为己所用),再复杂点的可以玩一下微服务。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1605 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 16:55 · PVG 00:55 · LAX 08:55 · JFK 11:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.