在这篇文章中,我将列出互联网上可用于学习和掌握 Golang 的一些最佳资源。
由于每个用户都有不同的学习模式偏好,因此我将涵盖基于 Golang 的基于文本的文章、教程、视频和热门课程。
Golang 的流行度增长非常快,一旦开始探索,您就会爱上 Go。
目录
开发人员指南
拥有大约 50,000 名学生,这是从基础学习 Go 的最佳完整包之一。 这门课程如果经过严格测试并且对大多数学生都适用; 购买后,您可以终生使用。 如果您喜欢从完整的视频课程中学习,那么这正是您所需要的!
这个 课程 非常适合初学者和想要重温介绍性概念的人。 该课程有 9 小时的点播视频以及额外的代码资源和作业。
本课程涵盖的一些主题是 –
- 语言的设置、安装和基础知识。
- 包和文件结构
- 变量、函数、数组和切片
- 深入介绍映射、结构和接口
- Channel 和 go-routines(并发编程)
训练营
通过 300 多场讲座, 完成训练营课程 Udemy 绝对是学习 Golang 的好地方。 您通过构建应用程序来学习 –
- 日志解析器
- 文件扫描器
- 垃圾邮件屏蔽器
除此之外,该课程还提供 1000 多个实践练习。
除了涵盖 Go 的基本概念(如结构、接口和通道)之外,本课程还有一个有趣的项目,您可以在其中学习如何制作弹跳球的动画。
您还将在课程结束时收到结业证书。
围棋之旅
好吧,我是官方 Golang 文档、博客和教程的忠实粉丝。 这个互动课程 是免费的,不需要任何本地设置。 只需打开网站,然后通过每个主题的动手代码从基础开始学习。
如果您只是想探索并想在没有任何设置的情况下学习基础知识,那么您应该从这门课程开始。
以身作则
这不完全是一门完整的课程,而是当您忘记基础知识时的必去之地。 该站点涵盖了所有概念,并带有介绍性文字和完整的运行示例。 该站点尽可能简单,因此专注于学习。 一些基本的介绍帖子是关于 –
- 变量和常量
- 为了
- 如果/否则和切换
- 数组和切片
- 地图
- 范围
- 功能
以及几乎所有您需要的主题! 做 一探究竟 并将其加入书签以供参考。
在 Y 分钟内学习 X
好吧,如果你想快速浏览一下基础知识, 在 Y 分钟内学习 X 是一个很棒的资源,不仅适用于 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 的任何特定主题,请尝试一下。
国泰
如果你是音频学习爱好者, 国泰 是一个很好的播客。 许多优秀的开发人员前来分享他们的实际知识以及他们如何在公司中使用 Go。 您还应该查看 GopherCon(golang 会议),知名人士在其中与社区分享他们的经验。
这些社区讨论围绕 Go 的最新趋势和改进。
我将在此处添加一些流行的播客 –
图书
有很多非常好的书。 我会在这里添加一些我最喜欢的——
博客
关于 Golang 有一些非常好的博客。 medium 上也有很多文章,你可以去探索。 我会在这里分享一些你会发现有用的 –
YouTube
喜欢基于视频的学习吗?
当然,请查看 freeCodeCamp 为初学者编写的 Golang 教程。
结论
如果您是初学者并加入 Golang 社区,我建议您完成上述课程之一。 此外,请与世界分享您的学习,并为使 Go 变得更好做出贡献。 我希望你学到了一些有用的东西,并且对你的 Go 之旅有好处。