为什么选择Go进行DevOps开发?
目前,大多数DevOps工程师使用Python
作为DevOps编程语言。但Python
存在一些编译时和服务扩展性问题。
例如,简单地升级到Python的新版本(从Python2
到Python3
,从Python3.7
到Python3.11
)可能会导致现有脚本停止工作。当兼容性问题发生时,不容易回滚到旧版本的Python。
现在,在云时代,Go
已成为云原生编排和应用程序的事实标准语言。Go
提供了你需要的所有工具,以在工具的可靠性和可扩展性方面取得巨大进展。
快速浏览一下Go官方网站,你可以看到以下公司(以及许多其他公司)已经在使用Go (https://golang.google.cn/solutions/#case-studies):
此外,Docker-compose
、kubernetes
、istio
、k3s
、prometheus
、argocd
、terraform
等等…你可以看到越来越多的云软件也是用Go
编写的。作为DevOps工程师,我个人认为采用Go
作为DevOps编程语言很重要,它将帮助你掌握新的云原生应用程序,并使你在职业上保持竞争力。
Go版本
如今,Go
团队已经将版本的发布节奏稳定在每年两个主要版本,通常是2月和8月。Go
团队承诺为最新的两个稳定主要版本的Go
提供支持。
例如,如果最新的主要版本是Go 1.17
,那么Go团队将为Go 1.17
和Go 1.16
提供支持。支持的范围主要包括修复版本中的重大问题、文档更改和安全问题更新。
我建议你选择最新的Go
版本。因为稳定版本的平均质量一直很高,几乎没有影响使用的重大错误。你不必太担心新版本的支持。谷歌自己的产品,例如Google App Engine,将很快支持它。
在Linux服务器上安装Go v1.19.3
Go
支持几乎所有主流Linux发行版操作系统。常见的包括Ubuntu、CentOS、Fedora、SUSE等。这些主流Linux发行版操作系统上的Go
安装方法相同(当然,某个发行版也可能使用其软件安装管理器仅提供自己的安装方法)。你可以参考以下安装步骤 (https://golang.org/doc/install):
- 从官方网站下载
Go v1.19.3
:
$ wget https://go.dev/dl/go1.19.3.linux-amd64.tar.gz --2022-11-08 08:12:19-- https://go.dev/dl/go1.19.3.linux-amd64.tar.gz
...
Saving to: ‘go1.19.3.linux-amd64.tar.gz’go1.19.3.linux-amd64.tar.gz 100%[======================================================================================>] 142.01M 13.2MB/s in 11s2022-11-08 08:12:30 (13.2 MB/s) - ‘go1.19.3.linux-amd64.tar.gz’ saved [148907134/148907134]
- 将Go二进制文件安装到“/usr/local/bin”
$ rm -rf /usr/local/go && tar -C /usr/local -xzf go1.19.3.linux-amd64.tar.gz
$ ls /usr/local
bin etc games go include lib lib64 libexec sbin share src
- 如果你已经完成此操作,请将“/usr/local/go/bin”添加到你的
.bashrc
中
$ echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc
- 检查Go版本
$ which go
/usr/local/go/bin/go
$ go version
go version go1.19.3 linux/amd64
Go Hello World
现在,我们已经成功安装了Go
,让我们创建我们的第一个Go
程序!
- 在主目录下创建
godev
文件夹
$ mkdir godev
- 在
godev
中创建helloworld
文件夹
$ cd godev
$ mkdir helloworld
$ cd helloworld
- 使用以下内容创建
main.go
文件(请注意,在Go
中,我们通常将多个单词直接连接作为源文件名,而不使用其他分隔符,如下划线。这是由于下划线在Go
中具有特殊作用)。
package mainimport "fmt"func main() {
fmt.Println("Hello, world")
}
- 运行它:
$ go fmt main.go
$ go run main.go
Hello, world
恭喜你,你刚刚成功运行了你的第一个Go helloworld
程序!
源代码分析
现在,你已经成功运行了第一个Go程序,让我们逐行阅读每个代码:
package main
这定义了一个Go程序中的包。包是Go语言的基本单元,而Go程序本质上是一组包。
在我们的示例中,它告诉Go编译器创建一个可执行文件,而不是库文件。如果你将包命名为不同的名称,则会遇到以下错误:
package command-line-arguments is not a main package
例如,如果你将其重命名为apple,如下所示:
package appleimport "fmt"func main() {
fmt.Println("Hello, world")
}
如果运行go run main.go
:
$ go run main.go
package command-line-arguments is not a main package
但是你仍然可以构建它,但它不会生成任何可执行文件:
$ go build main.go
$ ls
main.go
import
正如名称所示,此import
关键字从$GOPATH目录中导入指定的包(如果未提供路径),否则从指定目录中导入。
在我们的示例中,fmt
是一个包的名称,它还表示包的导入路径,即标准库下的fmt
目录。
func
func
是Go中用于创建函数的关键字。语法看起来像:
func function_name(Parameter-list)(Return_type){
// function body.....
}
在这里,main
函数很特殊:当你运行可执行的Go程序时,所有代码都将从此入口函数开始运行。
fmt.Println
fmt
包实现了类似于C的printf()和scanf()函数的格式化I/O。fmt.Println()
函数使用其操作数的默认格式,并写入标准输出。在末尾添加换行符。
Go IDE
我建议你使用GoLand或VsCode。但GoLand每月需要$19.90或每年$199.00的费用。VsCode是免费的,这就是我使用的。要使用VsCode设置Go,你只需按照VsCode官方文档操作:https://code.visualstudio.com/docs/languages/go
译自:https://medium.com/geekculture/devops-in-go-your-first-go-program-14185d8892a1
评论(0)