Go 中的 DevOps——你的第一個 Go 程序

Go 訓(xùn)練營系列中的 DevOps

image.png

為什么在 Go 中使用 DevOps?

目前,大多數(shù) DevOps 工程師都使用Python它作為他們的 DevOps 編程語言。但是Python伴隨著一些編譯時和服務(wù)擴展問題。

例如,簡單地升級到新版本的 Python ( Python2 to Python3, Python3.7 to Python3.11) 可能會導(dǎo)致您現(xiàn)有的腳本停止工作。當出現(xiàn)兼容性問題時,回滾到舊版本的 Python 并不容易。

現(xiàn)在在云時代,Go已經(jīng)成為云原生編排和應(yīng)用的事實語言。Go隨附您在工具可靠性和擴展能力方面取得巨大進步所需的所有工具。

快速瀏覽 Go 官方網(wǎng)站,您可以看到以下公司(以及更多公司)已經(jīng)在使用 Go(https://golang.google.cn/solutions/#case-studies):

image.png

比如:Docker-compose, kubernetes, istio, k3s, prometheus, argocd, terraform, 等。你可以看到越來越多的云服務(wù)軟件在使用Go。對于 DevOps 工程師,我個人認為采用 DevOps 編程語言很重要,它將幫助您掌握新的云原生應(yīng)用程序,并使您在職業(yè)生涯中保持競爭力。

Go版本

如今,Go團隊已經(jīng)將版本的發(fā)布節(jié)奏穩(wěn)定在每年兩次大發(fā)布,通常是二月和八月。Go 團隊承諾為最新的兩個穩(wěn)定主要版本的 Go 提供支持。

例如,如果最新的主要版本是Go 1.17,那么 Go 團隊將提供對Go 1.17Go 1.16提供支持。支持范圍主要包括版本重大問題修復(fù)、文檔變更、安全問題更新等。

我建議您選擇最新Go版本。因為穩(wěn)定版的平均質(zhì)量Go一直都很高,很少有影響使用的大bug。您不必太擔心新版本的支持。Google 自己的產(chǎn)品,例如 Google App Engine,將很快支持它。

在 Linux 服務(wù)器上安裝 Go v1.19.3

Go支持幾乎所有主流Linux發(fā)行版操作系統(tǒng)。常見的有Ubuntu、CentOS、Fedora、SUSE等,Go在這些主流的Linux發(fā)行版操作系統(tǒng)上的安裝方法都是一樣的(當然某些發(fā)行版也可能使用其軟件安裝管理器只提供自己的安裝方法)??梢詤⒖家韵掳惭b步驟(https://golang.org/doc/install

  • Go v1.19.3從其官網(wǎng)下載:
$ 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 11s
2022-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
  • 如果您已經(jīng)這樣做了,請把“/usr/local/go/bin”添加到環(huán)境變量中
$ 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

現(xiàn)在我們已經(jīng)Go安裝成功了,讓我們來創(chuàng)建我們的第一個Go程序吧!

  • 在主目錄下創(chuàng)建一個文件夾godev
$ mkdir godev
  • godev中創(chuàng)建文件夾helloworld
$ cd godev
$ mkdir helloworld
$ cd helloworld
  • 創(chuàng)建main.go文件內(nèi)容如下(注意,在Go中,我們通常直接將多個單詞拼接起來作為源文件名,而不是使用下劃線或其他分隔符,這是因為下劃線在Go中有特殊的作用)。
package main
import "fmt"
func main() {
        fmt.Println("Hello, world")
}
  • 運行:
$ go fmt main.go
$ go run main.go
Hello, world

恭喜,你剛剛成功運行了你的第一個 go helloworld程序!

源碼分析

現(xiàn)在您已經(jīng)成功運行了第一個 Go 程序,讓我們檢查每一行

package main

這定義了一個包Go。包是Go語言的基本單位,Go程序本質(zhì)上是包的集合。

在我們的示例中,它告訴 Go 編譯器創(chuàng)建可執(zhí)行文件而不是庫文件。如果您以不同的方式命名包,您將運行 int 以下錯誤:

package command-line-arguments is not a main package

比如重命名為apple,如下:

package apple
import "fmt"
func main() {
        fmt.Println("Hello, world")
}

如果你想運行使用go run main.go

$ go run main.go
package command-line-arguments is not a main package

但是您仍然可以構(gòu)建它,但它不會生成任何可執(zhí)行文件:

$ go build main.go
$ ls
main.go

import

顧名思義,這個import關(guān)鍵字從 $GOPATH 目錄(如果沒有提到路徑)或從提到的目錄中導(dǎo)入指定的包。

在我們的例子中,fmt是一個包的名稱,它也代表了包的導(dǎo)入路徑,也就是fmt標準庫下的目錄。

func

func是 中的關(guān)鍵字Go,用于創(chuàng)建函數(shù)。語法如下:

func function_name(Parameter-list)(Return_type){
    // function body.....
}

這里的main函數(shù)比較特殊:當你運行一個可執(zhí)行Go程序時,所有的代碼都會從這個入口函數(shù)開始運行。

fmt.Println

fmt包使用類似于 C 的 printf() 和 scanf() 函數(shù)的函數(shù)實現(xiàn)格式化 I/O。該fmt.Println()函數(shù)使用默認格式的運算對象并寫入標準輸出。最后添加一個換行符。

Go IDE

我推薦你使用GoLandVsCode。但是 GoLand 每月花費 19.90 美元或每年 199.00 美元。VsCode 是免費的,這就是我使用的。要使用 VsCode 設(shè)置 Go,您只需遵循 VsCode 官方文檔:https ://code.visualstudio.com/docs/languages/go

image.png

Have a nice day, Happy coding.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容