为了账号安全,请及时绑定邮箱和手机立即绑定

2025年学Golang,你绝不会后悔!

正如我在之前的文章里提到的,我们正在开发LiveAPI,一个自动生成API文档的工具。LiveAPI的后端使用的是Golang,我正在发现Golang的独特和酷炫的特性,感觉很有趣。

如果你还不了解,简单来说,Golang (Go) 是由 Google 在 2009 年设计的一种编程语言。它的语法和 C 语言很相似。

在开始从事 Golang 项目之前,我主要使用 Node.js 和 Python 的 web 框架。对于转向 Golang 的初学者来说,从其他领域初期可能会有些困难,但一旦你开始练习并掌握了技能,你就不会再离开了。

我用Golang重新实现了Python命令行工具Glee,将其转换成Go语言的版本。

Imagcription

我们发现Python运行速度较慢,这使得维护一个单独的编译后的CLI可执行文件非常困难,有时与Mac OS不兼容,导致。这些问题以及其他挑战迫使我们转而使用Golang。这里有一个Reddit帖子详细讲述了这次转变,以及背后的原因。

本文将介绍Go语言中吸引我的独特之处。

1. Goroutines - 轻量级并发处理

    func main() {
        go sayHello("World") // 并发执行
        time.Sleep(1 * time.Second) // 等待1秒
    }

    func sayHello(name string) {
        fmt.Printf("Hello, %s!\n", name) // 打印问候语
    }

切换到全屏模式,退出全屏模式

可以把 goroutines 想象成能够独立完成任务的小型工作者。它们比传统的线程要轻得多——你可以创建成千上万个,而不会对性能产生影响。

Imaription

2. 通道功能 - 内置通讯功能

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

代码功能解释:

func main() {
    messages := make(chan string) // 创建一个字符串通道
    go func() { messages <- "ping" }() // 启动一个goroutine发送"ping"消息
    msg := <-messages // 从通道接收消息
    fmt.Println(msg) // 打印接收到的消息
}

全屏模式, 退出全屏

通道就像水管,让goroutines可以安全地交流。想象两个人通过一根管子传递纸条——一个人写好后放进去,另一个人取出来。

3. 暂缓 - 清理变简单了

    func readFile() {
        file, err := os.Open("test.txt")
        defer file.Close() // 在函数执行完毕时自动关闭文件
    }

全屏模式 退出全屏

这就像当你打开文件时写下一个小纸条说“别忘了关掉它”,就像推迟处理整理任务一样。

4. 接口实现 - 隐式契约。

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

    type 终端输出 struct{}

    func (cw 终端输出) Write(data []byte) (int, error) {
        return fmt.Println(string(data))
    }

点击全屏模式 按退出全屏

Go 的接口是隐式实现的——只要一个类型具备正确的方法,它就自动实现了这一接口。这就像入会一样:不必正式声明你是会员;只要你能满足俱乐部的要求,你就是自动成为会员了。

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

    func divide(a, b float64) (float64, error) {
        if b == 0 {
            return 0, errors.New("除零错误")
        }
        return a / b, nil
    }

    func main() {
        result, err := divide(10, 0)
        if err != nil {
            fmt.Println("错误信息:", err)
            return
        }
        fmt.Println("计算结果:", result)
    }

全屏 退出全屏

多个返回值的特点使得 Go 语言中的错误处理更加自然和明确。就像购物时既拿到商品又拿到收据一样——你可以先检查是否有问题再继续。这种模式鼓励程序员妥善处理错误。

这些只是我喜欢的 Go 语言中的一些特性。还有其他的特性,比如单个可执行二进制文件、更快的性能、自动类型推断、内置的测试功能以及跨平台编译。

如果你正在为2025年制定新年的计划,不妨把Golang加入你的清单。你绝不会后悔。谢谢你的阅读!如果你想通过参与开源项目来学习Golang,可以看看这两个项目,一个是glee,另一个是Lama2

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消