在这篇文章中,我将为大家推荐一些在互联网上学习和精通 Golang 的优秀资源。
考虑到每位学习者都有不同的学习偏好,我将涵盖多种形式的资源,包括基于 Golang 的文字文章、教程、视频以及热门课程。
Golang 的受欢迎程度正在迅速提升,一旦您开始探索,相信您会爱上这门语言。
开发者指南
这门课程拥有大约 50,000 名学员,是学习 Golang 基础知识的最佳完整教程之一。 该课程经过严格测试,适合大多数学习者;购买后,您可以永久使用。 如果您偏好通过完整的视频课程进行学习,这绝对是您的理想选择!
这个课程 特别适合初学者以及想要复习入门概念的人。 它提供了 9 小时的点播视频,以及额外的代码资源和练习。
本课程涵盖的部分主题包括:
- 语言的设置、安装和基础知识。
- 包和文件结构
- 变量、函数、数组和切片
- 深入讲解映射、结构和接口
- 通道和 Go 协程(并发编程)
训练营课程
通过 300 多节课程,在 Udemy 上完成训练营课程 绝对是学习 Golang 的好选择。 您将通过构建以下应用程序进行学习:
- 日志解析器
- 文件扫描器
- 垃圾邮件拦截器
此外,该课程还提供 1000 多个实践练习。
除了涵盖 Go 的基本概念(如结构、接口和通道)外,本课程还有一个有趣的实践项目,您可以从中学习如何制作弹跳球动画。
课程结束后,您还将获得结业证书。
Go 语言之旅
我本人是官方 Golang 文档、博客和教程的忠实拥护者。这个互动式教程是完全免费的,无需任何本地环境设置。 您只需打开网站,即可通过每个主题的实践代码从基础开始学习。
如果您只是想探索一下,并希望在无需任何设置的情况下学习基础知识,那么这个教程绝对是您的理想选择。
Go 实例
这虽然不是一个完整的课程,但却是您在遗忘基础知识时不可错过的地方。该网站涵盖了所有概念,并附有介绍性的文字和完整的运行示例。网站设计尽可能简洁,以便您专注于学习。 一些基本的介绍性文章涉及以下主题:
- 变量和常量
- For 循环
- If/Else 和 Switch 语句
- 数组和切片
- 映射
- 范围
- 函数
以及几乎所有您可能需要的主题! 务必浏览一下,并将其添加至您的书签以供参考。
在 Y 分钟内学习 X
如果您想快速浏览一下基础知识,在 Y 分钟内学习 X 是一个很棒的资源,它不仅适用于 Go,而且适用于几乎所有编程语言。 它由社区驱动,并在一个页面上涵盖了大量主题。 一旦您精通 Go,请务必回馈社区。
以下是该教程中的一段代码片段,它解释了函数中的并发编程:
// We'll use inc to increment some numbers concurrently. func learnConcurrency() { // Same make function used earlier to make a slice. Make allocates and // initializes slices, maps, and channels. c := make(chan int) // Start three concurrent goroutines. Numbers will be incremented // concurrently, perhaps in parallel if the machine is capable and // properly configured. All three send to the same channel. go inc(0, c) // go is a statement that starts a new goroutine. go inc(10, c) go inc(-805, c) // Read three results from the channel and print them out. // There is no telling in what order the results will arrive! fmt.Println(<-c, <-c, <-c) // channel on right, <- is "receive" operator. cs := make(chan string) // Another channel, this one handles strings. ccs := make(chan chan string) // A channel of string channels. go func() { c <- 84 }() // Start a new goroutine just to send a value. go func() { cs <- "wordy" }() // Again, for cs this time. // Select has syntax like a switch statement but each case involves // a channel operation. It selects a case at random out of the cases // that are ready to communicate. select { case i := <-c: // The value received can be assigned to a variable, fmt.Printf("it's a %T", i) case <-cs: // or the value received can be discarded. fmt.Println("it's a string") case <-ccs: // Empty channel, not ready for communication. fmt.Println("didn't happen.") } // At this point a value was taken from either c or cs. One of the two // goroutines started above has completed, the other will remain blocked. learnWebProgramming() // Go does it. You want to do it too. }
如此简洁明了,如果您想快速了解 Golang 的任何特定主题,不妨尝试一下。
GoTime
如果您是音频学习爱好者,GoTime 是一个很棒的播客。许多优秀的开发人员会分享他们的实践知识,以及他们如何在公司中使用 Go。 您还应该关注 GopherCon(Go 语言大会),知名人士会在会上与社区分享他们的经验。
这些社区讨论主要围绕 Go 的最新趋势和改进。
我在这里列出一些热门的播客:
书籍
关于 Go 语言,有很多非常不错的书籍。 我会在这里列出一些我最喜欢的:
博客
关于 Golang,有很多非常好的博客。 Medium 上也有很多文章值得您探索。 我会在这里分享一些您会觉得有用的博客:
YouTube
偏爱基于视频的学习方式吗?
当然,您可以查看 freeCodeCamp 为初学者编写的 Golang 教程。
总结
如果您是初学者并加入 Golang 社区,我建议您完成上述课程之一。 此外,请与世界分享您的学习心得,并为 Go 语言的进步做出贡献。 我希望您能从本文中获得有价值的信息,并祝您 Go 语言学习之旅一切顺利。