go語言的「1.10」版本支援xp系統。golang1.10是最後支援windows xp/2003的版本,因此如果想要golang編譯的程式可以在winxp/2003上執行,需要下載golang1.10;之後的版本則最低要求Win7/2008作業系統。
php入門到就業線上直播課:進入學習
Apipost = Postman + Swagger + Mock + Jmeter 超好用的API偵錯工具:
本教學操作環境:linux7.3系統、GO 1.18版本、Dell G3電腦。
Go語言開發的版本
Go語言程式的開發主要依賴於golang編譯器。編譯器分為GC(Go Compiler)和GCCGo。目前,golang官方可以下載的是GC版本,GCCGo則是由GCC組織維護。
golang1.10是最後支援windows xp/2003的版本,因此如果想要golang編譯的程式可以在winxp/2003上執行,需要下載golang1.10。之後的版本則最低要求Win7/2008作業系統。
對於Linux作業系統而言,golang支援的最低核心版本為2.6.23。這對於Redhat 而言,至少是RHEL6.0(2.6.32-71);對於CentOS而言,至少是CentOS6.0(2.6.32-71);對於Oracle Linux而言,至少是OL5.6(2.6.32-100.26.2.el5uek);對於Ubuntu而言,至少是10.04;對於Suse Linux而言,至少是SLE11(Suse Linux Enterprise 11)。【相關推薦:Go視訊教學、】
對於Unix而言,FreeBSD可以採用GC,但對於非x86處理器的作業系統而言,則需要採用GCCGo編譯器。
進行Go語言開發的要素
(1)編譯器
將程式碼編譯為二進位制可執行檔案的命令工具。其實這裡應該叫「構建器」更為合適。因為程式碼編寫完成後,輸入「go build」命令,可以直接將程式碼「編譯」並「連結」為可執行檔案。
術語「編譯」與「連結」的定義來自於C語言
C語言程式碼由固定的詞彙按照固定的格式組織起來,簡單直觀,程式設計師容易識別和理解,但是對於CPU,C語言程式碼就是天書,根本不認識,CPU只認識幾百個二進位制形式的指令。這就需要一個工具,將C語言程式碼轉換成CPU能夠識別的二進位制指令,這個工具是一個特殊的軟體,叫做編譯器(Compiler)。
C語言程式碼經過編譯以後,並沒有生成最終的可執行檔案(.exe 檔案),而是生成了一種叫做目標檔案(Object File)的中間檔案(或者說臨時檔案)。目標檔案也是二進位制形式的,它和可執行檔案的格式是一樣的。對於 Visual C++,目標檔案的字尾是.obj;對於 GCC,目標檔案的字尾是.o。
目標檔案經過連結(Link)以後才能變成可執行檔案。既然目標檔案和可執行檔案的格式是一樣的,為什麼還要再連結一次呢,直接作為可執行檔案不行嗎?
不行的!因為編譯只是將我們自己寫的程式碼變成了二進位制形式,它還需要和系統元件(比如標準庫、動態連結庫等)結合起來,這些元件都是程式執行所必須的。
連結(Link)其實就是一個「打包」的過程,它將所有二進位制形式的目標檔案和系統元件組合成一個可執行檔案。完成連結的過程也需要一個特殊的軟體,叫做連結器(Linker)。
(2)擴充套件包/元件
在進行程式編寫的過程中,如果所有的「支援程式」或「工具類」都由開發人員從零開始實現,工作量會變得很大。因此要提高開發效率,大多數情況下會嘗試尋找輔助程式開發的「擴充套件包」或「元件」。golang自帶包管理工具,因此開發時可以按照具體需要通過命令下載擴充套件包。
(3)程式碼編寫與偵錯
可以通過任何文字編輯器開發程式碼,然後通過GC編譯器編譯程式,當然也可以通過」go run」命令直接執行。如果需要偵錯程式,大多數情況下最為安全、穩妥、可信的方式是在程式中輸出紀錄檔。如果非要單點偵錯,可以採用delve。
環境搭建
(1)下載並解壓
cd usr/local
wget https://golang.google.cn/dl/go1.15.6.linux-amd64.tar.gz
tar xf go1.15.6.linux-amd64.tar.gz
cd go
登入後複製
(2)建立軟連線
ln -s usr/local/go/bin/go usr/local/bin/go
登入後複製
(3)範例:Hello world
cd usr/local/src
mkdir -p go/helloworld
cd go/helloworld/
vim main.go
登入後複製
輸入如下程式碼:
package main
import(
"fmt"
)
func main(){
fmt.Println("Hello world")
}
登入後複製
儲存退出,然後執行如下命令
go run main.go
登入後複製
此時,系統會有如下輸出:
構建
如果每次都通過go run去執行程式,則需要在釋出程式時需要帶上golang的執行時環境。這顯然是不能滿足要求的。可以將程式直接構建為可執行檔案。
鍵入如下命令:
go build
登入後複製
此時,會在當前目錄下產生一個helloworld的可執行檔案
執行這個檔案,會得到與go run 相同的結果。
./helloworld
登入後複製
使用擴充套件包
golang的擴充套件包有多種不同的管理方式。比如傳統的 go get 方式以及新推出對的go module方式。
對於go get方式,由於某些特殊原因,部分官方包無法從golang.org下載,因此需要採取手動下載與go get相結合的方式。
對於go module方式,由於可以採用goproxy代理的方式獲取golang.org的基礎包,因此完美解決了國內golang開發的難題。
然而go module只有1.13版本之後的golang才能支援。而1.13是不支援winxp/2003的。並且對於go get與go module而言,有關程式碼在引包的時候,寫法多少有些不同。因此如果要開發相容低版本作業系統的程式,仍然建議採用go get進行包管理。
這裡只介紹通過go module管理包的方式
以讀取mongodb資料為例,介紹如何使用go module引入mongodb使用者端擴充套件包,並讀取資料。
設定goproxy代理
go env -w GOPROXY=https://goproxy.cn,direct
登入後複製
建立專案目錄,並初始化
mkdir -p go/mongodemo
cd go/mongodemo/
go mod init mongodemo
登入後複製
此時,會在mongodemo目錄下生成go.mod檔案
然後編輯main.go,輸入如下程式碼:
package main
import (
"fmt"
"log"
"gopkg.in/mgo.v2"
"gopkg.in/mgo.v2/bson"
)
type cfg_host struct {
Host string
Cfg_data string
}
func main() {
user := "使用者名稱"
password := "密碼"
port := "埠"
ip := "localhost"
url := fmt.Sprintf("mongodb://%s:%s@%s:%s",user,password,ip,port)
session, err := mgo.Dial(url)
if err != nil {
panic(err)
}
defer session.Close()
Optional. Switch the session to a monotonic behavior.
session.SetMode(mgo.Monotonic, true)
c := session.DB("db").C("cfg_hosts")
var cfgs []cfg_host
err = c.Find(bson.M{}).All(&cfgs)
if err != nil {
log.Fatal(err)
}
for _,item := range cfgs {
fmt.Printf("%s\n",item.Host)
fmt.Printf("%s\n",item.Cfg_data)
}
}
登入後複製
構建
go build
登入後複製
此時,go module
會自動下載依賴包
同時,生成了名為「mongodemo」的可執行檔案
執行該檔案,輸出了mongodb中的查詢結果
更多程式設計相關知識,請存取:!!
以上就是go語言哪個版本支援xp的詳細內容,更多請關注TW511.COM其它相關文章!