日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
看看老碼農(nóng)是如何使用GO語(yǔ)言的

什么是 GVM

Go 語(yǔ)言版本管理器(GVM)是管理 Go 語(yǔ)言環(huán)境的開(kāi)源工具。GVM 「pkgsets」 支持安裝多個(gè)版本的 Go 并管理每個(gè)項(xiàng)目的模塊。它最初由 Josh Bussdieker 開(kāi)發(fā),GVM 與 Ruby RVM 類似,允許你為每個(gè)項(xiàng)目或一組項(xiàng)目創(chuàng)建一個(gè)開(kāi)發(fā)環(huán)境,分離不同的 Go 版本和包依賴關(guān)系,來(lái)提供更大的靈活性,以防不同版本造成的問(wèn)題。GVM 主要有以下幾個(gè)特性:

成都創(chuàng)新互聯(lián)是一家專業(yè)提供固原企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、H5開(kāi)發(fā)、小程序制作等業(yè)務(wù)。10年已為固原眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)絡(luò)公司優(yōu)惠進(jìn)行中。

  • 管理 Go 的多個(gè)版本,包括安裝、卸載和指定使用 Go 的某個(gè)版本
  • 查看官方所有可用的 Go 版本,同時(shí)可以查看本地已安裝和默認(rèn)使用的 Go 版本
  • 管理多個(gè) GOPATH,并可編輯 Go 的環(huán)境變量
  • 可將當(dāng)前目錄關(guān)聯(lián)到 GOPATH
  • 可以查看 GOROOT 下的文件差異
  • 支持 Go 版本切換

安裝 GVM

GVM 本質(zhì)上就是一個(gè) SHELL 腳本,它背后做的事情是先把源碼下載下來(lái),再用 C 做編譯。所以,安裝 GVM 前你需要先安裝一些依賴包。

 
 
 
  1. # Debian/Ubuntu
  2. $ sudo apt-get install curl git mercurial make binutils bison gcc build-essential
  3. # Redhat/Centos
  4. $ sudo yum install curl
  5. $ sudo yum install git
  6. $ sudo yum install make
  7. $ sudo yum install bison
  8. $ sudo yum install gcc
  9. $ sudo yum install glibc-devel
  10. # macOS
  11. $ xcode-select --install
  12. $ brew update
  13. $ brew install mercurial

安裝好依賴環(huán)境后, GVM 的安裝也很簡(jiǎn)單。官方提供了一鍵安裝腳本,你只需直接運(yùn)行就行了。

如果你使用的是 zsh 的話將前面的 bash 改為 zsh 即可,這條命令主要是檢查相關(guān)依賴環(huán)境并下載 GVM 相關(guān)的文件,然后創(chuàng)建所需目錄,并且在 .bashrc 或者 .zshrc 中加入:

 
 
 
  1. [[ -s "/home/wcl/.gvm/scripts/gvm" ]] && source "/home/wcl/.gvm/scripts/gvm"

使每次登錄 Shell 時(shí)都可以自動(dòng)生效。

使用 GVM 安裝和管理 Go 版本

一旦安裝了 GVM,就可以開(kāi)始使用它來(lái)安裝和管理不同版本的 Go。首先,你可以用 gvm listall 命令顯示可以下載和編譯可用的 Go 版本。

 
 
 
  1. $ gvm listall 
  2. gvm gos (available) 
  3. go1 
  4. go1.0.1 
  5. go1.0.2 
  6. go1.0.3 
  7. ...

安裝特定的 Go 版本只需運(yùn)行 gvm install 命令,其中 是表示要安裝的版本。假設(shè)你正在處理一個(gè)使用 Go 1.12.8 版本的項(xiàng)目,你就可以使用 gvm install go1.12.8 命令來(lái)安裝這個(gè)版本。

 
 
 
  1. $ gvm install go1.12.8 
  2. Installing go1.12.8... 
  3. * Compiling... 
  4. go1.12.8 successfully installed!

安裝完成后,輸入 gvm list 命令后,你會(huì)看到 Go 1.12.8 版本與系統(tǒng)自帶的 Go 版本(使用操作系統(tǒng)的軟件包管理器打包的版本)都同時(shí)存在。

 
 
 
  1. $ gvm list 
  2. gvm gos (installed) 
  3. go1.12.8 
  4. => system

不過(guò),這時(shí) GVM 仍然默認(rèn)使用系統(tǒng)的 Go 版本,通過(guò)它旁邊的 => 符號(hào)來(lái)表示。你可以使用 gvm use 命令來(lái)切換到新安裝的 go 1.12.8 版本。

 
 
 
  1. $ gvm use go1.12.8 
  2. Now using version go1.12.8 
  3. $ go version 
  4. go version go1.12.8 linux/amd64

如果不想每次敲 gvm use 指令來(lái)切換版本,你可以加上 --default 參數(shù)來(lái)指定默認(rèn)使用這個(gè)版本。

 
 
 
  1. $ gvm use go1.12.8 --default

是不是,很容易呢!GVM 使管理已安裝的 Go 版本變得極其簡(jiǎn)單,但它不止如此!

由于 Go 1.5 使用了自舉(用 Go 編譯 Go),如果在系統(tǒng)環(huán)境完全沒(méi)有 Go 命令的情況下,直接使用 gvm install go 會(huì)報(bào)錯(cuò)。所以,你必須先安裝 Go 1.4。

 
 
 
  1. # 先安裝 1.4 版本的,-B 表示只安裝二進(jìn)制包。
  2. $ gvm install go1.4 -B
  3. $ gvm use go1.4
  4. $ export GOROOT_BOOTSTRAP=$GOROOT
  5. # 再安裝 1.5+ 版本的
  6. $ gvm install go1.12.8

使用 GVM pkgset

默認(rèn)情況下,如果你通過(guò) go get 獲取一個(gè)包,它會(huì)被下載到 $GOPATH 目錄中的 src 和 pkg 目錄下。然后你可以使用 import 將其引入到你的 Go 程序中。然而,在不同的項(xiàng)目中管理相同包的不同版本就會(huì)變得困難。

GVM 通過(guò)使用「pkgsets」將項(xiàng)目的新目錄附加到 Go 安裝版本的默認(rèn) $GOPATH,類似 Linux 系統(tǒng)上的 $PATH,這樣就可以很好地完成了項(xiàng)目之間包的管理和隔離。我們來(lái)看一個(gè)實(shí)例,安裝一個(gè)新版本的 Go 1.12.9。

 
 
 
  1. $ echo $GOPATH
  2. /home/chris/.gvm/pkgsets/go1.12.8/global
  3. $ gvm install go1.12.9
  4. Installing go1.12.9...
  5. * Compiling...
  6. go1.12.9 successfully installed
  7. $ gvm use go1.12.9
  8. Now using version go1.12.9

當(dāng) GVM 被告知使用一個(gè)新版本時(shí),它將會(huì)更換一個(gè)新的 $GOPATH,gloabl pkgset 將默認(rèn)使用該版本。

 
 
 
  1. $ echo $GOPATH 
  2. /home/chris/.gvm/pkgsets/go1.12.9/global 
  3. $ gvm pkgset list 
  4. gvm go package sets (go1.12.9) 
  5. => global

盡管默認(rèn)情況下沒(méi)有安裝額外的包,但是 global pkgset 中的包對(duì)于使用這個(gè)特定版本 Go 的任何項(xiàng)目都是可用的。

現(xiàn)在,假設(shè)你正在啟動(dòng)一個(gè)新項(xiàng)目,它需要一個(gè)特定的包。首先,使用 GVM 創(chuàng)建一個(gè)名為 introToGvm 的新的 pkgset。

 
 
 
  1. $ gvm pkgset create introToGvm
  2. $ gvm pkgset use introToGvm
  3. Now using version go1.12.9@introToGvm
  4. $ gvm pkgset list
  5. gvm go package sets (go1.12.9)
  6. global
  7. => introToGvm

如上所述,一個(gè)與 pkgset 同名的新目錄 introToGvm 被添加到 $GOPATH。

 
 
 
  1. $ echo $GOPATH
  2. /home/chris/.gvm/pkgsets/go1.12.9/introToGvm:/home/chris/.gvm/pkgsets/go1.12.9/global

接下來(lái),驗(yàn)證下新目錄 introToGvm 中的目錄結(jié)構(gòu)。

 
 
 
  1. $ cd $( awk -F':' '{print $1}' <<< $GOPATH ) 
  2. $ pwd 
  3. /home/chris/.gvm/pkgsets/go1.12.9/introToGvm 
  4. $ ls 
  5. overlay pkg src

注意:新目錄看起來(lái)很像普通的 $GOPATH,新的 Go 包會(huì)被 Go get 命令下載并且被添加到 pkgset 中。

gorilla/mux 按照預(yù)期添加到了 pkgset 的 $GOPATH 目錄,現(xiàn)在你就可以與使用該 pkgset 的項(xiàng)目一起使用該模塊了。

卸載 GVM 或指定版本 Go 語(yǔ)言

如果你只是想卸載某個(gè)安裝好的 Go 版本,可以使用以下指令。

 
 
 
  1. $ gvm uninstall go1.12.8

如果你想完全卸載掉 GVM 和 所有安裝的 Go 版本,可以使用以下指令。

 
 
 
  1. # 需謹(jǐn)慎操作 
  2. $ gvm implode

總結(jié)

GVM 是以一種直觀的、非侵入性的方式來(lái)管理 Go 版本和包的工具。它可以單獨(dú)使用,也可以使用 GVM 的 Go 版本管理功能與其他 Go 模塊管理技術(shù)結(jié)合使用。GVM 通過(guò)對(duì) Go 版本和包依賴關(guān)系的隔離使項(xiàng)目開(kāi)發(fā)更加容易,并減少了管理版本沖突的復(fù)雜性。


文章名稱:看看老碼農(nóng)是如何使用GO語(yǔ)言的
標(biāo)題路徑:http://www.dlmjj.cn/article/ccooeod.html