溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

go語言支持xp的版本是什么

發(fā)布時間:2022-12-15 09:40:39 來源:億速云 閱讀:302 作者:iii 欄目:編程語言

這篇“go語言支持xp的版本是什么”文章的知識點(diǎn)大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“go語言支持xp的版本是什么”文章吧。

go語言的“1.10”版本支持xp系統(tǒng)。golang1.10是最后支持windows xp/2003的版本,因此如果想要golang編譯的程序可以在winxp/2003上運(yùn)行,需要下載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上運(yùn)行,需要下載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í)行文件的命令工具。其實(shí)這里應(yīng)該叫“構(gòu)建器”更為合適。因?yàn)榇a編寫完成后,輸入“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í)行文件不行嗎?

不行的!因?yàn)榫幾g只是將我們自己寫的代碼變成了二進(jìn)制形式,它還需要和系統(tǒng)組件(比如標(biāo)準(zhǔn)庫、動態(tài)鏈接庫等)結(jié)合起來,這些組件都是程序運(yùn)行所必須的。

鏈接(Link)其實(shí)就是一個“打包”的過程,它將所有二進(jìn)制形式的目標(biāo)文件和系統(tǒng)組件組合成一個可執(zhí)行文件。完成鏈接的過程也需要一個特殊的軟件,叫做鏈接器(Linker)。

(2)擴(kuò)展包/組件

在進(jìn)行程序編寫的過程中,如果所有的“支持程序”或“工具類”都由開發(fā)人員從零開始實(shí)現(xiàn),工作量會變得很大。因此要提高開發(fā)效率,大多數(shù)情況下會嘗試尋找輔助程序開發(fā)的“擴(kuò)展包”或“組件”。golang自帶包管理工具,因此開發(fā)時可以按照具體需要通過命令下載擴(kuò)展包。

(3)代碼編寫與調(diào)試

可以通過任何文本編輯器開發(fā)代碼,然后通過GC編譯器編譯程序,當(dāng)然也可以通過”go run”命令直接運(yùn)行。如果需要調(diào)試程序,大多數(shù)情況下最為安全、穩(wěn)妥、可信的方式是在程序中輸出日志。如果非要單點(diǎ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")
}

保存退出,然后運(yùn)行如下命令

go run main.go

此時,系統(tǒng)會有如下輸出:

go語言支持xp的版本是什么

構(gòu)建

如果每次都通過go run去執(zhí)行程序,則需要在發(fā)布程序時需要帶上golang的運(yùn)行時環(huán)境。這顯然是不能滿足要求的??梢詫⒊绦蛑苯訕?gòu)建為可執(zhí)行文件。

鍵入如下命令:

go build

此時,會在當(dāng)前目錄下產(chǎn)生一個helloworld的可執(zhí)行文件

go語言支持xp的版本是什么

運(yùn)行這個文件,會得到與go run 相同的結(jié)果。

./helloworld

go語言支持xp的版本是什么

使用擴(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)建項(xià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會自動下載依賴包

go語言支持xp的版本是什么

同時,生成了名為“mongodemo”的可執(zhí)行文件

執(zhí)行該文件,輸出了mongodb中的查詢結(jié)果

go語言支持xp的版本是什么

以上就是關(guān)于“go語言支持xp的版本是什么”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對大家有幫助,若想了解更多相關(guān)的知識內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI