查看原文
其他

我们为什么要学习Go

21CTO 2022-05-25




简介


Golang大概是最年轻的编程语言之一。在这篇文章发表时,它当前稳定的 Golang 版本是 1.17.3。


它已被开发者认为是流行的编程语言。可以在许多平台和环境上构建和运行,有可靠且支持的内置包捆绑在一起等优秀特性。


很多人使用 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()}

一篇文章肯定不能涵盖全部语法,但上面的代码是 Golang 的一个示例。现在不需要理解它,但是可以从package和开始学习代码的结构,import作为代码范围,func main作为入口点,if-else以及for loop作为控制结构之一types,nil,errors等。


它是strictly typed,curly braces即使您只编写一行控制结构,也使用as 范围,使用nil而不是null(您在此处保存 1 个字符),并且仅使用分号分隔语句,而不是结束它。综上所述,Golang 的语法对初学者友好,至少我是这么认为的。


你会不会害怕写脏代码语法或任何的,因为不仅Golang有其指导,以更好地写它,它也有它自己的linter,并formatter告诉你什么变量未使用的内置权,而这就是你在做什么会知道。


内置支持


Golang 自带工具来构建出色的应用程序。连接者?格式化?测试员?你可以任意给它起个名字。它还有一个垃圾收集器的本地化支持。除此之外,Golang 还有内置的支持包。可以编写Web 应用程序、命令行界面应用程序,无需任何第三方模块的开发Web Assembly 应用程序。


如果您创建一个 Golang 模块怎么做?下面接着讨论。


模块


我们可以在本地和远程轻松地创建 Golang 模块。只需执行:

go mod init <module-name>

然后像往常一样编写代码。Gol模块支持开箱即用 git,可以将 Golang 模块推送到 git 存储库,然后将其导入到自己的代码中。比如想导入 Postgres 插件或数据库均衡切换器模块,只需输入 git repo 名称即可导入。

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


构建结果


Golang可以直接编译成二进制!


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)


小结


我知道我没有涵盖所有语言规范。以上所有原因对我作为开发人员来说都是相当主观的,您可以通过参考FAQ 页面或规范页面找到您对 Golang 的兴趣。此外,Golang 正在走向第二个版本,该版本将支持通用和更好的错误处理。

感谢您的阅读!


编译:大雄

作者:Clavin June

来源:https://clavinjune.dev/en/blogs/this-is-why-you-should-learn-golang/


关于21CTO.com


21CTO.com是开发者的学习与服务平台。


我们为开发者提供高质量的资讯、学习以及工具等产品;

帮助企业快速对接开发者,包括人才招聘,数字化转型咨询,软件研发等服务。


网站地址:www.21cto.com

投稿邮箱:info@21cto.com

联系微信:13426109659


 扫描二维码关注21CTO微信号

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存