如今学习Golang的最佳方法是什么

如今学习Golang的最佳方法是什么 大家好,

我是这个社区的新成员,对GoLang也完全是新手。 (我是一名初级开发人员,目前正在完成我的软件工程学位。)

最近我在工作中接到一个任务, 首先要做的是决定用于实现解决方案的技术。 在网上进行了一些研究后,我认为Go可能非常适合我的解决方案。 我以前从未使用过它,我想进行一个真正全面的教程,并打下良好的基础。

我已经尝试过Todd McLeod在Udemy上的课程《学习如何编码:谷歌的Go(golang)编程语言》,但发现他的教学方法不太适合我。 目前我正在学习freecodecacdemy的YouTube视频教程,这个教程相当不错,但感觉有点过时了……

有人能推荐一个好的学习资源吗?


更多关于如今学习Golang的最佳方法是什么的实战教程也可以访问 https://www.itying.com/category-94-b0.html

9 回复

当你对Go语言并不真正熟悉时,你是如何决定它适合你和你的解决方案的?

一个未被提及的资源是像HackerRank或LeetCode这样的计算机编程网站。它们都提供Go作为可用的编辑器。

更多关于如今学习Golang的最佳方法是什么的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


明智之言。

我并非认为每一个直觉决定都是好的;而是说,有时直觉决定可能最终被证明是一个好的选择。

话虽如此,我同意在做长期决定之前,进行仔细评估是必要的。

如果你希望快速掌握基础知识,我强烈推荐 https://gobyexample.com/。不过,你应该具备一些其他编程语言的经验。之后,你可以通过构思并实现一个自己的应用程序来练习。

祝你入门顺利!

@christophberger

我也是因为类似的原因迷上了Go。但随着年龄增长,智慧也随之而来:现在我相信,一个人应该仔细规划自己将时间投入到什么事物上,因为你所做的任何决定都将极大地影响你的未来。

欢迎!除了这里其他人推荐的优秀资源外,go.dev/doc/ 上也有许多链接和指南。如果你想要一本实体书,《Go程序设计语言》(作者:Alan A. A. Donovan 和 Brian W. Kernighan)非常棒,你可以在线免费阅读第一章,感受一下写作风格,看看它是否符合你的学习方式。

telo_tade:

当你对Go语言并不真正熟悉时,你是如何认定它适合你和你的解决方案的呢?

我知道这个问题不是问我的,但我想提一下,早在2011年,我在一本IT杂志上读到一篇关于Go的文章,立刻就着迷了。这种小巧、简单的语言设计的优势是显而易见的(尤其是考虑到当时Java、JavaScript和C++是主流语言,而这些语言都可以被概括为相当复杂)。

我们每个人有时都会基于直觉做出一个好的决定。

嘿,telo,这确实是个非常好的问题。

显然,我缺乏对不同技术的实践经验,所以我决定在网上好好读一读。我搜索了与我项目领域相似的项目,也查找了在我问题领域内比较不同编程语言的文章。GoLang 这个名字出现了很多次。

话虽如此,我并不太相信自己的“阅读能力”(因为我缺乏经验和理解),所以我选择使用 Go 的另一个重要原因是它的高人气、庞大的社区和丰富的文档。(而且还有两位好朋友推荐了它。)

但是,是的,我仍然没有找到关于如何构建项目以及最新的系统设置配置的好教程。

你好,

你指的是这个吗:学习Go编程 - Golang初学者教程 - YouTube

它看起来确实有些过时了,因为它展示的是golang.org的页面(而Go团队在此期间已将大部分内容迁移到了go.dev)。然而,Go是一门非常稳定的语言,甚至提供了兼容性保证,所以你在那里学到的大部分内容今天应该仍然适用。话虽如此,Go工具链可能是这门语言中变化最大的部分——尤其是在最近引入Go Modules之后。不确定视频是否涵盖了这一点(我没有花6个小时去查看整个视频来确认这一点:)。

我过去常常将Go Wiki作为学习资源的起点推荐给人们,但刚才我又浏览了一遍列表,发现许多链接指向的资源相当陈旧,这可能不是你想要的。

想要快速概览,@s0xzwasd推荐的gobyexample肯定是一个好的开始。如果你想直接在浏览器中尝试代码,Go团队官方的Go语言之旅是另一个选择。

要通过小项目感受Go语言,Ardan Labs博客有一些非常棒的Go项目,而我自己的博客appliedgo.net也专门致力于这类Go内容。

对于学习Go语言,我推荐以下系统化的方法:

1. 官方文档和教程

首先从官方资源开始,这是最权威且最新的:

// 官方教程示例
package main

import "fmt"

func main() {
    fmt.Println("Hello, Go!")
}

2. 实践项目驱动学习

边做边学是最有效的方法:

// 从简单CLI工具开始
package main

import (
    "fmt"
    "os"
)

func main() {
    if len(os.Args) < 2 {
        fmt.Println("Usage: go run main.go <name>")
        return
    }
    fmt.Printf("Hello, %s!\n", os.Args[1])
}

推荐项目路线:

  1. 命令行工具(文件处理器、API客户端)
  2. RESTful API服务
  3. 并发爬虫
  4. 微服务应用

3. 高质量学习资源

  • 书籍

    • 《The Go Programming Language》(Donovan & Kernighan)
    • 《Go in Action》(William Kennedy)
  • 视频课程

4. 实际编码练习

// 并发编程练习
package main

import (
    "fmt"
    "sync"
    "time"
)

func worker(id int, wg *sync.WaitGroup) {
    defer wg.Done()
    fmt.Printf("Worker %d starting\n", id)
    time.Sleep(time.Second)
    fmt.Printf("Worker %d done\n", id)
}

func main() {
    var wg sync.WaitGroup
    
    for i := 1; i <= 5; i++ {
        wg.Add(1)
        go worker(i, &wg)
    }
    
    wg.Wait()
}

5. 社区和实战

  • 参与开源项目(从简单的bug修复开始)
  • 使用Go实现工作中的实际需求
  • 加入Go社区(Gophers Slack、Reddit r/golang)

6. 学习路线建议

  1. 基础语法(2周)
  2. 标准库使用(2周)
  3. 并发编程(1周)
  4. Web开发(2周)
  5. 项目实战(持续)

关键是要动手写代码,每个概念都要通过实际编码来巩固。可以从简单的工具开始,逐步增加复杂度。

回到顶部