开篇词|这样入门Go,才能少走弯路
开篇词|这样入门Go,才能少走弯路
讲述:Tony Bai
时长14:46大小13.48M
我与 Go 的这十年
推荐你入坑 Go 的三大理由
怎样学才能少走弯路?
赞 124
提建议
精选留言(48)
- 自由2021-10-13Tony Bai 老师,你好,我接触 go 目前已经 3 个月了。在接触 go 一个月后,我就选择跳槽去了一家 go 的公司,我对 go 的发展是坚定不移的肯定,相信它会越来越好。 我的问题是,阅读完该专栏,我是否可以得到 go 风格的代码编写风格、优雅的 go 编程姿势?
作者回复: 感谢你对专栏的支持。 虽然这门课的定位是入门课,而并非进阶课,但我在课程讲解以及go示例代码中都会尽力以native的go代码去呈现。并且课程讲解穿插着一些关于go编码的最佳实践建议,希望你在阅读后能有收获。 btw,要写出native 的go代码,一定要多读高质量go代码,Go标准库是一个最好的选择。俗话说:"熟读唐诗三百首,不会作诗也会吟",多读高质量代码,与此有异曲同工之妙。
35 - 文经2021-10-26白老师,Go 实现自举具体是什么意思,是不是用Go语言开发的工具链来编译和执行Go源代码?这个具体是一个什么样的过程,Go语言为什么到了1.5版本才实现自举,是因为这个过程很难吗,为什么自举对Go来说是一个重要的节点?
作者回复: 和很多主流语言一样,Go语言编译器最初都是由C语言和汇编语言实现的。C语言和汇编实现的Go编译器(记作A)用来编译Go源文件。那么问题来了?是否可以用Go语言自身实现一个Go编译器B,用编译器A来编译Go编译器B工程的源码并链接成最终的Go编译器B呢?这就是Go核心团队在Go 1.5版本时做的事情。 他们将绝大多数原来用C和汇编编写的Go编译器以及运行时实现改为使用Go语言编写,并用Go 1.4.x编译器(C与汇编实现的,相当于A)编译出Go 1.5编译器。这样自Go 1.5版本开始,Go编译器就是用Go语言实现的了,这就是所谓的自举。即用要编译的目标编程 语言(Go语言)编写其(Go)编译器。 这之后,Go核心团队基本就告别C代码了,可以专心写Go代码了。这可以让Go核心团队积累更为丰富的Go语言编码经验,也算是一种“吃狗粮”。同时Go语言自身就是站在C语言等的肩膀上,修正了C语言等的缺陷并加入创新机制而形成的,用Go编码效率高,还可 避面C语言的很多坑。 在这个基础上,使用Go语言实现编译器和runtime还利于Go编译器以及运行时的优化,Go 1.5及后续版本GC延迟大幅降低以及性能的大幅提升都说明了这一点。这就是自举的重要之处。
25 - aoe2021-10-14学习Go是因为VS Code的Copilot插件支持Go但不支持Java,AI插件写代码不是一般的强
作者回复: Copilot插件我还没体验过,如果真的如果所言,那也是Go语言的一大幸事👍。
共 7 条评论16 - 老韩2021-10-14老师,什么样的人适合学 Go 语言,我目前是Java工程师,在一家小公司里。
作者回复: Go设计之初,其目标是成为一门通用的系统编程语言。这一目标基本上就将go划分到后端编程语言行列。虽然go社区在前端、移动端编程的支持上面都做了很多尝试,比如:gopherjs项目以及go支持编译为webassembly来应对前端开发,再比如gomobile项目(https://pkg.go.dev/golang.org/x/mobile)让go也可以在移动端编程占有一席之地,但这么多年下来,go的主力战场还是云原生基础设施、中间件、web/api服务、微服务、命令行应用等等。因此如果你的目标与这些领域重合,那么go是一个很有竞争力的选择。
14 - lesserror2021-10-13很早就关注老师的微博了,看到老师几乎每天都在分享关于Go的知识。 关于Go的入门课程看过很多了,目前认为普遍存在的问题有以下几个:要么过于侧重理论,脱离了实践;要么泛泛而谈,重点内容也没有说清楚;要么就是基于以前的gopath项目管理去讲解的;要么没有结合动态语言的特性来对比Go语言的不同,不能让动态语言的开发者很好的转变过来思维...... 另外,文中这样说:“Goroutine 等并发原语是 Go 应用运行时并发设计的基础,而接口则是 Go 推崇的面向组合设计的抓手,这一动一静共同构成了 Go 应用程序的骨架。” 怎么理解这里的一动一静呢?展开
作者回复: 没有一门课是完美的,从你的问题来看,我只能说我的专栏能尽可能多的满足你的需求。 关于“一动一静”,“动”主要指程序的并发设计层面,如何设计去管理和控制goroutine。当程序运行起来后,真正“动”的是一个一个goroutine。而“静”,则是go源码中的实体以及它们之间的耦合关系。
共 2 条评论10 - 小宝2021-10-13收获了三个诀窍与五个阶段。所谓三个诀窍是“心定、手勤、脑勤”,大道至简,适用于任何语言。5
- 逍遥布顽童2021-10-13终于等到课程上线,卡点刷新,第一时间购买学习。不知道自己是第一个,还是第二个购买的?5
- Kong2021-10-15请问中小公司中的Go语言技术栈的岗位多吗?
作者回复: go是生产力与执行效率两方面都有突出表现的语言。这两方面都能给中小公司省下不少money。一线城市接纳新语言的开发者较多,招聘也不再是问题了。因此我觉得一线城市应该不少,这方面具体数据还得看招聘网站。二三线城市这些年go也在拓展地盘。在我地处的东北地区,越来越多小公司选用了go,趋势是好的。
共 3 条评论4 - arch2021-10-14tony老师,文中提及go GC很多次,期待补充些golang GC相关的文章哈
作者回复: 对于任何一门带gc的语言,gc都是高级话题。对于入门第一课,gc不是重点。我这里后续会根据大家需求,考虑是否以加餐形式对gc做系统说明。大家有有关gc问题也可以随时在留言区提问。
4 - jimmyd2021-10-13老师 请问go在机器学习算法包括工程这一块 前景如何
作者回复: 这个要实话实说。在机器学习领域,python是当之无愧的老大。但python也有自己的瓶颈,主要是性能相较于静态语言有数量级差距。各个编程语言也都试图争抢python在机器学习领域的份额,包括julia、c++、rust,Go也不例外。但与在云原生领域的投入相比,Go社区在机器学习算法库方向上的投入还不够,但也有一些成果,比较知名的项目包括gonum、gorgonia等。在帮助构建机器学习/深度学习平台层面上,go倒是发挥了更大的作用,比如kubeflow。 机器学习算法上,python已经形成一家独大之势,其他语言,包括Go都会在自己擅长的领域一起助力机器学习的发展了。
共 2 条评论5 - 夏周一2021-10-13第一时间买下4
- Alexhuihui2021-10-23记得大二的时候看过Go 的语法,现在已经作为Java工程师工作2年了,重学Go ing
作者回复: 加油!
2 - 多喝热水2021-10-16老师辽宁人吧
作者回复: 哈哈,这都让你听出来了。
2 - fomy2021-10-15我是Java开发者,没有系统学习过Go语言,希望老师能说一下Java和Go的区别。
作者回复: 这是很大的话题,也是一个极容易“引战”的话题。 看待这个问题有多种维度,比如从语言语法、生产力、性能、社区活跃度,生态成熟度、发展前景等等。 语言语法见仁见智,java是不折不扣的面向对象编程语言,就像“java编程思想”一书中说:“一切都是对象”。而go是传统的命令式编程语言,按照go语言family图谱,它的先祖来自C、Pascal、Newsqueak等。语法简单,但谈不上“领先”,就像很多人说的在最近10年出品的编程语言中,go的语法显得有些“土气”,我更喜欢称之为朴实无华。很多人就像我,就是喜欢这种朴实。虽然朴实,但go的表达力并不差哦。 在生产力方面,目前来看go是要高于java的。 性能方面,同资源消耗下,go也是要高于java的。另外一点就是即便是新手写go,性能也不会很差。 社区活跃度方面,两者都是主流语言,java诞生年头多,且是目前企业应用领域的第一语言,其社区自然更好一些。生态成熟度也是如此,现在很难找到一个领域没有java的开源实现。实话说,go在这方面规模还不及java,但是增长速度要更快。 至于,发展前景,两者都是自己擅长领域的佼佼者,都有不错的前景。go由于处于成长期,蓝海属性更强一些。
共 2 条评论2 - 快乐就好2022-07-11运维转go开发,有机会入门吗
作者回复: 可以啊。go很简单。特别适合运维编写一些运维管理工具。
共 2 条评论1 - 麦芽糖2022-01-13go 在性能和开发效率上取得了平衡。 如 C++ 性能好但是开发效率低,python 开发效率高但是性能差 。 推荐 go 的理由 ● 对初学者足够友善,能够快速上手。 ● 生产力和性能的最佳结合。 ● 职业选择有利。有钱。 路线 ● 建立对 go 的认同 ● 扎实基础 ● 应用和设计意识 ● 实战展开
作者回复: 👍
1 - 九三2021-11-07go和golang是一回事吧老师
作者回复: Go是这门编程语言的官方名称。golang是民间对其的“俗称”,当然golang也是Go语言官方站点(golang.org)的名称组成部分。当然了,都是指一种语言。个人建议使用官方名称。
1 - 番茄2021-10-20经过洋哥的推荐和网友的火热氛围中,购买了这个课程,感谢洋哥和白老师。1
- 进化菌2021-10-19这一次,golang真的不能中途停止学习了
作者回复: 加油!
1 - tedsed2021-10-14看这个专栏还是用最新稳定版的 Go 语言讲解的,先给老师点个赞,会好好跟着学的
作者回复: 嗯嗯,目前用go 1.17。感谢对课程的支持,希望课程能对你有所帮助。
1