首頁  >  文章  >  後端開發  >  go語言哪個版本支援xp

go語言哪個版本支援xp

青灯夜游
青灯夜游原創
2022-12-14 19:02:246797瀏覽

go語言的「1.10」版本支援xp系統。 golang1.10是最後支援windows xp/2003的版本,因此如果想要golang編譯的程式可以在winxp/2003上執行,則需要下載golang1.10;之後的版本則最低要求Win7/2008作業系統。

go語言哪個版本支援xp

本教學操作環境: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語言哪個版本支援xp

建置

######################################### #####

如果每次都通过go run去执行程序,则需要在发布程序时需要带上golang的运行时环境。这显然是不能满足要求的。可以将程序直接构建为可执行文件。

键入如下命令:

go build

此时,会在当前目录下产生一个helloworld的可执行文件

go語言哪個版本支援xp

运行这个文件,会得到与go run 相同的结果。

./helloworld

go語言哪個版本支援xp

使用扩展包


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会自动下载依赖包

go語言哪個版本支援xp

同时,生成了名为“mongodemo”的可执行文件

执行该文件,输出了mongodb中的查询结果

go語言哪個版本支援xp

更多编程相关知识,请访问:编程视频!!

以上是go語言哪個版本支援xp的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn