首页
Preview

使用Go进行DevOps —— 你的第一个Go程序

为什么选择Go进行DevOps开发?

目前,大多数DevOps工程师使用Python作为DevOps编程语言。但Python存在一些编译时和服务扩展性问题。

例如,简单地升级到Python的新版本(从Python2Python3,从Python3.7Python3.11)可能会导致现有脚本停止工作。当兼容性问题发生时,不容易回滚到旧版本的Python。

现在,在云时代,Go已成为云原生编排和应用程序的事实标准语言。Go提供了你需要的所有工具,以在工具的可靠性和可扩展性方面取得巨大进展。

快速浏览一下Go官方网站,你可以看到以下公司(以及许多其他公司)已经在使用Go (https://golang.google.cn/solutions/#case-studies):

此外,Docker-composekubernetesistiok3sprometheusargocdterraform等等…你可以看到越来越多的云软件也是用Go编写的。作为DevOps工程师,我个人认为采用Go作为DevOps编程语言很重要,它将帮助你掌握新的云原生应用程序,并使你在职业上保持竞争力。

Go版本

如今,Go团队已经将版本的发布节奏稳定在每年两个主要版本,通常是2月和8月。Go团队承诺为最新的两个稳定主要版本的Go提供支持。

例如,如果最新的主要版本是Go 1.17,那么Go团队将为Go 1.17Go 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

我建议你使用GoLandVsCode。但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

版权声明:本文内容由TeHub注册用户自发贡献,版权归原作者所有,TeHub社区不拥有其著作权,亦不承担相应法律责任。 如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

点赞(0)
收藏(0)
菜鸟一只
你就是个黄焖鸡,又黄又闷又垃圾。

评论(0)

添加评论