您好,登錄后才能下訂單哦!
這篇“go語言支持xp的版本是什么”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“go語言支持xp的版本是什么”文章吧。
go語言的“1.10”版本支持xp系統。golang1.10是最后支持windows xp/2003的版本,因此如果想要golang編譯的程序可以在winxp/2003上運行,需要下載golang1.10;之后的版本則最低要求Win7/2008操作系統。
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)。
對于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的版本是什么”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。