写点什么

为什么字节跳动选择使用 Go 语言?

作者:Jackpop
  • 2023-02-05
    浙江
  • 本文字数:1622 字

    阅读完需:约 5 分钟

程序员宝藏库https://gitee.com/sharetech_lee/CS-Books-Store


Golang 是最年轻的编程语言之一,在写这篇内容之前,目前稳定的 Golang 版本是 1.19.5。


除此之外,它被认为是一种在开发者中很受欢迎的编程语言。它可以在许多平台和环境中构建和运行,有丰富且实用的内置包。


我使用 Golang 是因为它简洁明了,结构化,而且干净。


接下来,我会介绍为何选择 Golang。我不打算将 Golang 与其他编程语言进行比较,因为我认为并没有什么意义和价值。


所以,我会从语言结构本身开始介绍,让你领会 Golang 的与众不同。

语言结构

package mainimport (  "errors"  "fmt")type Numbers []intfunc (n Numbers) Repeat() error {  if n == nil {    return errors.New("Numbers is nil")  }  for i, e := range n {    fmt.Printf("%02d => %3d\n", i+1, e)  }  return nil}func main() {  if err := Numbers(nil).Repeat(); err != nil {    fmt.Println(err)  }  _ = Numbers([]int{1, 99, 100}).Repeat()}
复制代码


我不会介绍所有的 Go 语言语法,但上面的代码是 Golang 代码的一个例子。


你现在不需要理解它,但你可以学习代码的结构,从 package 和 import,到 func main 作为入口点,if-else 和 for 循环作为控制结构之一,还涉及到 types、nil、errors 等等。


它是严格的类型化的,使用大括号作为范围,即使你只写了一行控制结构,使用 nil 而不是 null(在这里节省了 1 个字符),并且只用分号来分隔语句,而不是结束它。


综上所述,Golang 的语法很适合初学者,至少我是这么认为的。


你不用担心写出质量较差的代码语法,因为 Golang 不仅有完善的指南来教你如何写的更好,它也有自己的 linter 和 formatter,来规范化你的代码。

内置支持

Golang 带来了自己内置的工具来帮你构建一个优秀的应用程序。


Linter? Formatter? Tester? 你说了算。


它也有一个垃圾收集器,原生支持并发,还支持在线运行。除此之外,Golang 也有支持性的内置包。你可以在没有任何第三方模块的情况下编写一个网络应用、命令行界面应用,甚至是一个 Web Assembly 应用。


但是,如果你想创建一个 Golang 模块呢?让我们来谈谈这个问题。

模块

你可以在本地和远程轻松地创建一个 Golang 模块。


只需执行 go mod init <module-name>,然后像往常一样编码即可。


Golang 模块开箱即支持 git,你可以直接把你的 Golang 模块推送到 git 仓库,然后把它导入你的代码中。


例如,如果你想导入 Postgres 插件或数据库凭证模块,你只需输入 git repo 的名字就可以导入。


import (  "context"  "database/sql"  "log"  "time"  "github.com/ClavinJune/rotator"  "github.com/lib/pq")
复制代码

构建结果

Golang 将你的代码构建成二进制文件。


如果你在 Windows 上,它将把你的代码构建成可执行文件,如果你在 Linux 上,它将构建一个 ELF 文件,以此类推。


另外,你可以只用一个环境变量来控制构建。


假设你在一台 Linux 机器上,但你想为 Windows 创建一个可执行文件,只要告诉它就可以了。


$ lsmain.go$ GOOS=windows GOARCH=amd64 go build main.go$ file main.exemain.exe: PE32+ executable (console) x86-64 (stripped to external PDB), for MS Windows$ GOOS=darwin GOARCH=amd64 go build main.go$ file mainmain: Mach-O 64-bit x86_64 executable
复制代码


你也可以创建一个 Web Assembly 模块。


$ GOOS=js GOARCH=wasm go build -o main.wasm main.go$ file main.wasmmain.wasm: WebAssembly (wasm) binary module version 0x1 (MVP)
复制代码


在前面的内容里,我并没有面面俱到详细介绍 Go 语言的每一处细节,只是主观的介绍了一些我个人比较欣赏的亮点。


如果,这能够引起你对 Go 语言的兴趣,可以通过书籍或者教程去深入、系统的学习。


hello,大家好,我是 Jackpop,重点大学本科毕业后保送到哈工大计算数学专业读研,有多年国内头部互联网、IT 公司工作经验,先后从事过计算机视觉、推荐系统、后端、数据等相关工作。如果同学们在升学考研、职业规划、高考志愿、简历优化、技术学习等方面有困惑,欢迎大家前来咨询!

发布于: 刚刚阅读数: 3
用户头像

Jackpop

关注

还未添加个人签名 2020-09-16 加入

公众号:平凡而诗意,微信:code_7steps,全网粉丝超20万,技术进阶、优质资源、实用工具,欢迎关注!

评论

发布
暂无评论
为什么字节跳动选择使用 Go 语言?_Jackpop_InfoQ写作社区