• 自由
    2022-10-12 来自北京
    学习一门新语言,我认为首先是动手。如果有其他语言的基础,那么重点是掌握它的编程惯例,也就是这么语言与其他语言的不同点以及最佳实践。学习 Go,官方的白皮书是必读的,同时官方的博客也写的很好。 1.我学习 Go,首先是 https://quii.gitbook.io/learn-go-with-tests/ 这个项目,强力推荐,边写边学,了解作者提到的变量声明、方法、函数、结构体、复合结构等,还能学习 TDD 的编程模式。 这个项目 1 天就能练完。 2.接下来就是看官方白皮书,也就是 《Go语言圣经》https://books.studygolang.com/gopl-zh/,6 天就能读完。 3.此时自己肯定摩拳擦掌,想要学一个框架,做一个小项目练练手(作者就是带你做项目,哈哈),我个人不推荐 Gee,不知道为什么,好多初学者都先回了解到 Gee 这个项目,这个项目已经是僵尸项目了,同时它做的事情就是 HTTP 相关的,例如前缀路由树、分组控制等。想写项目练习,巩固 Go ,我推荐学习极客兔兔的《七天用Go从零实现系列》https://geektutu.com/post/gee.html,选择感兴趣的写一写吧! 4. Go 里面并没有像 Java Spring 一样“一统天下”的框架(或许是因为很多都是 Java 转语言的新 Gopher,所以我这样说?),学习框架,我首先推荐的是Go标准库,当然,标准库没有扎实的基础很难读懂,但是它很巧妙,你可以把阅读所有标准库,作为你的目标,言归正传,框架我推荐 Bilibil 开源的 Kratos 项目,https://go-kratos.dev/en/docs/,大厂背书、丰富的技术选型、活跃的社区、优秀的工程化思想。 5. 接下来,推荐阅读 《Go 语言高级编程》,它的内容,对于面试造火箭的你一定有不小的帮助,重点阅读 Channl 和 Slice,对于GC垃圾回收、运行时、内存逃逸我目前没有阅读到特别通俗易懂的作品。 6. 极客时间毛剑老师《Go 进阶训练营》 7. Happy Coding! 参加开源项目! 提高自己的技术影响力,为 China Gopher 发出更多的声音!
    展开

    作者回复: 👏🏻👏🏻

    共 7 条评论
    56
  • jeffery
    2022-10-11 来自北京
    买就对了!干货十足!配合go底层原理剖析更nice

    作者回复: 冲鸭!

    
    5
  • 会飞的大象
    2022-10-19 来自北京
    个人认为学习一门语言,可以从以下几个方面展开(共勉): 1、先得了解语言特性和应用场景,该语言和其他语言的区别,为了解决什么问题,语言的诞生背景和设计初衷(这个一般可以从官方博客,社区或者搜索引擎去检索)。 2、掌握语言的基础语法,包括不限于(变量声明、类型、方法、函数、系统命令、单元测试、异常处理、包管理、定时任务、标准库使用姿势等),这个一般根据官方教程或博客走就行。这个阶段完成之后可以通过一个练手项目来串联知识点,系统化的应用起来,同时可以通过项目获取正向反馈,提升学习热情 3、掌握语言的核心语法(例如并发模型、垃圾回收、网络编程、程序运行机制等)及常用语法的实现原理(例如切片、goroutine、channel等),感觉这个阶段是持续时间最长的一个阶段。需要持续不断的实践踩坑。可以开始研究一些开源框架和组件,通过观察别人的代码实现,吸收好的实现技巧和琢磨背后的设计原理。 4、工程化实践,这个和第三点其实是并行相辅相成的,实践验证理论理解是否正确,理论指导实践是否正确和优雅。最好是能够和日常工作内容相结合 5、参与开源项目,成为贡献者。这个一开始会有很多问题,但是万事开头难。开源项目能让你在工作之外,了解到其他同道者和问题,解决问题帮助你深入思考实现的解决方案
    展开

    作者回复: 很全面୧(๑•̀◡•́๑)૭

    
    4
  • 文经
    2022-11-25 来自北京
    “Go 为了保证代码的健壮性,屏蔽了一些容易犯错的操作。例如没有隐式的数值转换、没有指针运算、没有类型别名、运行时会检查数组的边界。” type alias 这个算是类型别名吗?

    作者回复: 算是的,go1.9之后有的,我修复一下

    
    1
  • Hale
    2022-10-31 来自北京
    老师好,在写项目中看到 type User struct { Name string `param:"name"` } 这种情况的param是什么写法?一般都是json,xml

    作者回复: 这被叫做tag哦,是通过反射等机制可以获取到的

    
    1
  • Seven
    2022-10-13 来自四川
    Q1: 需要把握哪些核心的知识? A1: 基本的语法这个是必须的;对比自己已掌握的语言,观察分析异同;思考语言诞生背景,应用场景,来看语言提供的API ,来纵览语言设计者的机制设计理念。 Q2: 应该沿着什么样的路径去学习呢? A2: 找一个可以实践的项目来学习,如果一个语言不好玩,感觉没有学下去的必要。强迫自己去做一件不认可、得不到满足和反馈的事,挺没劲的。
    
    4
  • 大梧桐树
    2022-10-12 来自广东
    我觉得核心的东西,线程,内存模型,垃圾回收,编译方式,网络编程,调试定位,测试。 学习路径就看个人,有人喜欢由浅入深,有人喜欢一上来就看源码,也有人从入门到放弃
    
    4
  • 看海
    2022-10-13 来自北京
    学习一门新语言,我会选择先会用,然后再去看源码,了解其内部执行原来,包括但不限于编译过程,垃圾回收,运行时分析等等
    
    3
  • 授人以🐟,不如授人...
    2022-10-16 来自广东
    核心的开发知识和顺序,大致是: - 基础语法 - 工具库 - 语言的工程开发能力,也就是用于构建软件工程的技术能力 - 高级语法
    
    2
  • 徐海浪
    2022-10-12 来自广东
    思考题: 学习语言基本语法,语言适用场景和特性,然后在做项目实战中深入学习。
    
    2