2025 年学习 Golang,你不会后悔

2025-06-07

2025 年学习 Golang,你不会后悔

正如我在之前的文章中提到的,我们正在构建LiveAPI,一个超级便捷的 API 文档自动生成工具。LiveAPI 的后端使用 Golang 语言,我正在探索 Golang 的独特而酷炫的功能。

对于那些不知道的人来说,Golang(Go)是谷歌于 2009 年设计的一种编程语言。它的语法与 C 类似。

在从事 Golang 项目之前,我主要使用 Node.js 和 Python Web 框架。对于从其他领域转到 Golang 的初学者来说,一开始可能会有点困难,但一旦你练习并积累了专业知识,你就不会放弃。

我的第一个 Golang 项目是将 Python CLI 工具Glee转换为 Golang。

图像版权

我们发现 Python 速度较慢,而且维护单个已编译的 CLI 二进制文件非常困难,有时该二进制文件还与 Mac OS 不兼容。这些问题以及其他问题迫使我们转向 Golang。这里有一篇 Reddit 帖子,介绍了这次迁移背后的故事和问题。

在本文中,我将解释 Golang 中吸引我的独特功能。

1. Goroutines - 轻量级并发

func main() {
    go sayHello("World") // runs concurrently
    time.Sleep(1 * time.Second) 
}

func sayHello(name string) {
    fmt.Printf("Hello, %s!\n", name)
}
Enter fullscreen mode Exit fullscreen mode

可以将 goroutine 想象成可以独立执行任务的微型工作线程。它们比传统线程轻量级得多——您可以创建数千个 goroutine,而不会对性能造成影响。

提取

2. 渠道——内置沟通

func main() {
    messages := make(chan string)
    go func() { messages <- "ping" }()
    msg := <-messages
    fmt.Println(msg)
}
Enter fullscreen mode Exit fullscreen mode

通道就像管道,让 goroutine 可以安全地通信。想象一下,两个人通过一根管道传递纸条——一个人写好并放进去,另一个人则把纸条拿出来。

3. Defer - 简化清理

func readFile() {
    file, err := os.Open("test.txt")
    defer file.Close() // Will run when function exits 
}
Enter fullscreen mode Exit fullscreen mode

延迟就像为清理任务设置提醒一样。这类似于在打开文件时写一张便条,上面写着“别忘了关闭文件”。

4. 接口实现——隐式契约

type Writer interface {
    Write([]byte) (int, error)
}

type ConsoleWriter struct{}

func (cw ConsoleWriter) Write(data []byte) (int, error) {
    return fmt.Println(string(data))
}
Enter fullscreen mode Exit fullscreen mode

Go 的接口是隐式满足的——如果一个类型拥有正确的方法,它就会自动实现该接口。这就像加入一个俱乐部:你无需正式声明会员资格;只要你能满足俱乐部的要求,你就会自动加入。

5. 多个返回值 - 原生错误处理

func divide(a, b float64) (float64, error) {
    if b == 0 {
        return 0, errors.New("cannot divide by zero")
    }
    return a / b, nil
}

func main() {
    result, err := divide(10, 0)
    if err != nil {
        fmt.Println("Error:", err)
        return
    }
    fmt.Println("Result:", result)
}
Enter fullscreen mode Exit fullscreen mode

在 Go 中,多个返回值使错误处理变得自然而明确。这就像购物时同时收到包裹和收据一样——你可以在继续操作之前检查一切是否正常。这种模式鼓励开发人员妥善处理错误。

这些只是我喜欢 Go 的几个特性。还有其他特性,例如单一可执行二进制文件、更快的性能、类型推断、内置测试支持以及交叉编译。

如果你正在制定 2025 年的计划,那就把 Golang 加到你的清单里吧。你不会后悔的。感谢阅读!如果你想通过为开源项目做贡献来学习 Golang,不妨看看gleeLama2

文章来源:https://dev.to/lincemathew/learn-golang-in-2025-you-wont-regret-it-531f
PREV
使用 CSS 属性选择器的高级样式
NEXT
使用 npm 7 工作区简化你的 monorepo