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

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

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

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

什么是 GVM

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

  • 管理 Go 的多個版本,包括安裝、卸載和指定使用 Go 的某個版本
  • 查看官方所有可用的 Go 版本,同時可以查看本地已安裝和默認使用的 Go 版本
  • 管理多個 GOPATH,并可編輯 Go 的環境變量
  • 可將當前目錄關聯到 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 

安裝好依賴環境后, GVM 的安裝也很簡單。官方提供了一鍵安裝腳本,你只需直接運行就行了。

如果你使用的是 zsh 的話將前面的 bash 改為 zsh 即可,這條命令主要是檢查相關依賴環境并下載 GVM 相關的文件,然后創建所需目錄,并且在 .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 版本與系統自帶的 Go 版本(使用操作系統的軟件包管理器打包的版本)都同時存在。

 

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

不過,這時 GVM 仍然默認使用系統的 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 參數來指定默認使用這個版本。

  1. $ gvm use go1.12.8 --default 

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

由于 Go 1.5 使用了自舉(用 Go 編譯 Go),如果在系統環境完全沒有 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 系統上的 $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 的任何項目都是可用的。

現在,假設你正在啟動一個新項目,它需要一個特定的包。首先,使用 GVM 創建一個名為 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 目錄,現在你就可以與使用該 pkgset 的項目一起使用該模塊了。

卸載 GVM 或指定版本 Go 語言

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

  1. $ gvm uninstall go1.12.8 

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

 

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

 

[[336378]]

總結

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

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

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碼農架構

2024-01-15 15:11:03

物聯網5G數字孿生

2018-10-17 22:01:06

2017-09-18 08:21:42

碼農AI人工智能

2018-10-24 15:53:29

微服務后端JVM

2013-08-12 11:18:00

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技術棧公眾號

主站蜘蛛池模板: 国产精品国产 | 精品亚洲一区二区三区 | 色婷婷精品 | 成人午夜av| 国产精品久久久久免费 | 91成人免费看 | 一级片在线视频 | 美国黄色毛片 | 国产精品激情 | 免费在线精品视频 | 涩涩导航 | 日韩中文在线视频 | 国产丝袜一区二区三区免费视频 | 九九精品久久久 | 亚洲欧美日韩精品久久亚洲区 | 久草视频网站 | 日韩一区二 | 国产一级电影网 | 国产伦精品一区二区三区精品视频 | 亚洲欧美国产精品久久 | 免费一区在线观看 | 日韩国产在线 | 日韩中文字幕在线 | 精品久久香蕉国产线看观看亚洲 | 日本高清视频网站 | 国产露脸对白88av | 国产精品免费一区二区三区四区 | 视频一区二区三区中文字幕 | 99热精品在线观看 | 日韩在线一区二区 | 欧美va大片 | 国产精品一区二区在线 | 欧美在线一区二区三区四区 | 成人免费av在线 | 国产免费一区二区三区网站免费 | 久久精品国产精品青草 | 精品视频在线一区 | 国产精品美女久久久久久免费 | 久热中文字幕 | 国产在线视频网 | av国产精品毛片一区二区小说 |