成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

看看老碼農是如何使用GO語言的

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

看看老碼農是如何使用GO語言的

什么是 GVM

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

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

安裝 GVM

GVM 本質上就是一個 SHELL 腳本,它背后做的事情是先把源碼下載下來,再用 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 的安裝也很簡單。官方提供了一鍵安裝腳本,你只需直接運行就行了。

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

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

使每次登錄 Shell 時都可以自動生效。

使用 GVM 安裝和管理 Go 版本

一旦安裝了 GVM,就可以開始使用它來安裝和管理不同版本的 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 版本只需運行 gvm install 命令,其中 是表示要安裝的版本。假設你正在處理一個使用 Go 1.12.8 版本的項目,你就可以使用 gvm install go1.12.8 命令來安裝這個版本。

 

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

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

 

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

不過,這時 GVM 仍然默認使用系統(tǒng)的 Go 版本,通過它旁邊的 => 符號來表示。你可以使用 gvm use 命令來切換到新安裝的 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 指令來切換版本,你可以加上 --default 參數(shù)來指定默認使用這個版本。

  1. $ gvm use go1.12.8 --default 

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

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

 

  1. # 先安裝 1.4 版本的,-B 表示只安裝二進制包。 
  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 

 

[[336377]]

使用 GVM pkgset

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

GVM 通過使用「pkgsets」將項目的新目錄附加到 Go 安裝版本的默認 $GOPATH,類似 Linux 系統(tǒng)上的 $PATH,這樣就可以很好地完成了項目之間包的管理和隔離。我們來看一個實例,安裝一個新版本的 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 

當 GVM 被告知使用一個新版本時,它將會更換一個新的 $GOPATH,gloabl pkgset 將默認使用該版本。

 

  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 

盡管默認情況下沒有安裝額外的包,但是 global pkgset 中的包對于使用這個特定版本 Go 的任何項目都是可用的。

現(xiàn)在,假設你正在啟動一個新項目,它需要一個特定的包。首先,使用 GVM 創(chuàng)建一個名為 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 

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

 

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

接下來,驗證下新目錄 introToGvm 中的目錄結構。

 

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

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

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

卸載 GVM 或指定版本 Go 語言

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

  1. $ gvm uninstall go1.12.8 

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

 

  1. # 需謹慎操作  
  2. $ gvm implode 

 

[[336378]]

總結

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

責任編輯:未麗燕 來源: 今日頭條
相關推薦

2019-04-19 09:09:51

2015-05-12 10:15:15

程序員

2023-07-16 22:34:55

2020-09-30 11:14:24

AI碼農架構

2018-10-17 22:01:06

2017-09-18 08:21:42

碼農AI人工智能

2024-01-15 15:11:03

物聯(lián)網5G數(shù)字孿生

2013-08-12 11:18:00

2018-10-24 15:53:29

微服務后端JVM

2015-04-21 12:48:37

老碼農技術理想

2023-08-27 21:07:02

2013-09-16 10:03:06

代碼碼農

2015-05-12 10:33:09

程序員代碼

2018-01-16 15:02:20

存儲RAIDSAN

2020-12-18 07:41:01

碼農編程語言

2017-04-01 09:13:48

編程語言框架

2018-03-30 15:19:24

2018-04-08 10:41:31

2013-08-22 10:10:31

2019-10-16 15:54:22

運維架構技術
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩欧美在线一区 | 亚洲成人午夜在线 | 国产精品福利在线观看 | 91精品国产一区二区三区 | 亚洲成人国产综合 | 日韩欧美在线视频 | 成人国产精品久久久 | 蜜桃在线一区二区三区 | 国产玖玖 | 一区二区精品在线 | 成人欧美一区二区三区在线观看 | 黄网站免费在线观看 | 成人福利在线观看 | 81精品国产乱码久久久久久 | 蜜桃av人人夜夜澡人人爽 | 亚洲欧美一区二区三区国产精品 | 日本成人片在线观看 | 国产精品一区视频 | 97精品超碰一区二区三区 | 91视频三区 | 免费观看av网站 | cao在线| 久久综合伊人一区二区三 | 精品一区二区三区视频在线观看 | 美女逼网站 | 国产成人精品免费视频大全最热 | 91色综合 | 91精品国产欧美一区二区 | 成人三级视频 | 国产在线对白 | 成人免费大片黄在线播放 | 久久亚洲一区二区三区四区 | 欧美日韩高清在线一区 | 欧美成人h版在线观看 | 午夜99| 亚洲精品久久久久久国产精华液 | 国产乱码精品一区二区三区中文 | 国产一区二区黑人欧美xxxx | 中文字幕二区三区 | av大片| 久久69精品久久久久久久电影好 |