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

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

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

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

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

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

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

语言结构

package main
import (
  "errors"
  "fmt"
)
type Numbers []int
func (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,来规范化你的代码。

扫描二维码关注公众号,回复: 14779950 查看本文章

内置支持

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

Linter? Formatter? Tester? 你说了算。

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

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

模块

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

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

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创建一个可执行文件,只要告诉它就可以了。

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

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

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

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

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

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

猜你喜欢

转载自blog.csdn.net/jakpopc/article/details/128894176