掌握 Golang 的一些最佳资源

在这篇文章中,我将为大家推荐一些在互联网上学习和精通 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 语言学习之旅一切顺利。