這篇“go語言支持xp的版本是什么”文章的知識點大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“go語言支持xp的版本是什么”文章吧。
創(chuàng)新互聯(lián)專注于荷塘網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供荷塘營銷型網(wǎng)站建設(shè),荷塘網(wǎng)站制作、荷塘網(wǎng)頁設(shè)計、荷塘網(wǎng)站官網(wǎng)定制、小程序制作服務(wù),打造荷塘網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供荷塘網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
go語言的“1.10”版本支持xp系統(tǒng)。golang1.10是最后支持windows xp/2003的版本,因此如果想要golang編譯的程序可以在winxp/2003上運行,需要下載golang1.10;之后的版本則最低要求Win7/2008操作系統(tǒng)。
Go語言開發(fā)的版本
Go語言程序的開發(fā)主要依賴于golang編譯器。編譯器分為GC(Go Compiler)和GCCGo。目前,golang官方可以下載的是GC版本,GCCGo則是由GCC組織維護(hù)。
golang1.10是最后支持windows xp/2003的版本,因此如果想要golang編譯的程序可以在winxp/2003上運行,需要下載golang1.10。之后的版本則最低要求Win7/2008操作系統(tǒng)。
對于Linux操作系統(tǒng)而言,golang支持的最低內(nèi)核版本為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而言,F(xiàn)reeBSD可以采用GC,但對于非x86處理器的操作系統(tǒng)而言,則需要采用GCCGo編譯器。
進(jìn)行Go語言開發(fā)的要素
(1)編譯器
將代碼編譯為二進(jìn)制可執(zhí)行文件的命令工具。其實這里應(yīng)該叫“構(gòu)建器”更為合適。因為代碼編寫完成后,輸入“go build”命令,可以直接將代碼“編譯”并“鏈接”為可執(zhí)行文件。
術(shù)語“編譯”與“鏈接”的定義來自于C語言
C語言代碼由固定的詞匯按照固定的格式組織起來,簡單直觀,程序員容易識別和理解,但是對于CPU,C語言代碼就是天書,根本不認(rèn)識,CPU只認(rèn)識幾百個二進(jìn)制形式的指令。這就需要一個工具,將C語言代碼轉(zhuǎn)換成CPU能夠識別的二進(jìn)制指令,這個工具是一個特殊的軟件,叫做編譯器(Compiler)。
C語言代碼經(jīng)過編譯以后,并沒有生成最終的可執(zhí)行文件(.exe 文件),而是生成了一種叫做目標(biāo)文件(Object File)的中間文件(或者說臨時文件)。目標(biāo)文件也是二進(jìn)制形式的,它和可執(zhí)行文件的格式是一樣的。對于 Visual C++,目標(biāo)文件的后綴是.obj;對于 GCC,目標(biāo)文件的后綴是.o。
目標(biāo)文件經(jīng)過鏈接(Link)以后才能變成可執(zhí)行文件。既然目標(biāo)文件和可執(zhí)行文件的格式是一樣的,為什么還要再鏈接一次呢,直接作為可執(zhí)行文件不行嗎?
不行的!因為編譯只是將我們自己寫的代碼變成了二進(jìn)制形式,它還需要和系統(tǒng)組件(比如標(biāo)準(zhǔn)庫、動態(tài)鏈接庫等)結(jié)合起來,這些組件都是程序運行所必須的。
鏈接(Link)其實就是一個“打包”的過程,它將所有二進(jìn)制形式的目標(biāo)文件和系統(tǒng)組件組合成一個可執(zhí)行文件。完成鏈接的過程也需要一個特殊的軟件,叫做鏈接器(Linker)。
(2)擴(kuò)展包/組件
在進(jìn)行程序編寫的過程中,如果所有的“支持程序”或“工具類”都由開發(fā)人員從零開始實現(xiàn),工作量會變得很大。因此要提高開發(fā)效率,大多數(shù)情況下會嘗試尋找輔助程序開發(fā)的“擴(kuò)展包”或“組件”。golang自帶包管理工具,因此開發(fā)時可以按照具體需要通過命令下載擴(kuò)展包。
(3)代碼編寫與調(diào)試
可以通過任何文本編輯器開發(fā)代碼,然后通過GC編譯器編譯程序,當(dāng)然也可以通過”go run”命令直接運行。如果需要調(diào)試程序,大多數(shù)情況下最為安全、穩(wěn)妥、可信的方式是在程序中輸出日志。如果非要單點調(diào)試,可以采用delve。
環(huán)境搭建
(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)創(chuàng)建軟連接
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
此時,系統(tǒng)會有如下輸出:
構(gòu)建
如果每次都通過go run去執(zhí)行程序,則需要在發(fā)布程序時需要帶上golang的運行時環(huán)境。這顯然是不能滿足要求的??梢詫⒊绦蛑苯訕?gòu)建為可執(zhí)行文件。
鍵入如下命令:
go build
此時,會在當(dāng)前目錄下產(chǎn)生一個helloworld的可執(zhí)行文件
運行這個文件,會得到與go run 相同的結(jié)果。
./helloworld
使用擴(kuò)展包
golang的擴(kuò)展包有多種不同的管理方式。比如傳統(tǒng)的 go get 方式以及新推出對的go module方式。
對于go get方式,由于某些特殊原因,部分官方包無法從golang.org下載,因此需要采取手動下載與go get相結(jié)合的方式。
對于go module方式,由于可以采用goproxy代理的方式獲取golang.org的基礎(chǔ)包,因此完美解決了國內(nèi)golang開發(fā)的難題。
然而go module只有1.13版本之后的golang才能支持。而1.13是不支持winxp/2003的。并且對于go get與go module而言,有關(guān)代碼在引包的時候,寫法多少有些不同。因此如果要開發(fā)兼容低版本操作系統(tǒng)的程序,仍然建議采用go get進(jìn)行包管理。
這里只介紹通過go module管理包的方式
以讀取MongoDB數(shù)據(jù)為例,介紹如何使用go module引入mongodb客戶端擴(kuò)展包,并讀取數(shù)據(jù)。
設(shè)置goproxy代理
go env -w GOPROXY=https://goproxy.cn,direct
創(chuàng)建項目目錄,并初始化
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)
}
}
構(gòu)建
go build
此時,go module
會自動下載依賴包
同時,生成了名為“mongodemo”的可執(zhí)行文件
執(zhí)行該文件,輸出了mongodb中的查詢結(jié)果
以上就是關(guān)于“go語言支持xp的版本是什么”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對大家有幫助,若想了解更多相關(guān)的知識內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。