当前位置: 首页 > 科技观察

看看老码友是怎么用GO语言的

时间:2023-03-17 22:55:23 科技观察

什么是GVMGo语言版本管理器(GVM)是一个管理Go语言环境的开源工具。GVM“pkgsets”支持安装多个版本的Go和管理每个项目的模块。GVM最初由JoshBussdieker开发,类似于RubyRVM,允许您为每个项目或一组项目创建一个开发环境,分离不同的Go版本和包依赖性,以在不同版本导致问题的情况下提供更大的灵活性。GVM主要有以下功能:管理多个Go版本,包括安装、卸载、指定某个版本的Go查看所有可用的官方Go版本,同时查看本地安装和默认的Go版本管理多个GOPATH,以及可以编辑Go的环境变量。您可以将当前目录与GOPATH相关联。您可以在GOROOT下查看文件差异。您可以在Go版本之间切换并安装GVMGVM。C进行编译。所以,你需要在安装GVM之前安装一些依赖。#Debian/Ubuntu$sudoapt-getinstallcurlgitmercurialmakebinutilsbisongccbuild-essential#Redhat/Centos$sudoyuminstallcurl$sudoyuminstallgit$sudoyuminstallmake$sudoyuminstallbison$sudoyuminstallgcc$sudoyuminstallglibc-devel#macOS$xcode-select--install$brewupdate$brewinstallmercurial安装好依赖环境后,GVM的安装这也很简单。官方提供一键安装脚本,直接运行即可。如果你用的是zsh,把之前的bash改成zsh就行了。该命令主要是查看相关依赖环境,下载GVM相关文件,然后创建需要的目录,添加到.bashrc或.zshrc中:[[-s"/home/wcl/.gvm/scripts/gvm"]]&&source"/home/wcl/.gvm/scripts/gvm"可以在每次登录Shell时自动生效。使用GVM安装和管理Go版本一旦安装了GVM,就可以开始使用它来安装和管理不同版本的Go。首先,您可以使用gvmlistall命令显示可供下载和编译的Go版本。$gvmlistallgvmgos(available)go1go1.0.1go1.0.2go1.0.3...要安装特定的Go版本,只需运行gvminstall命令,其中是要安装的版本。假设你正在开发一个使用Go1.12.8的项目,你可以使用gvminstallgo1.12.8命令来安装这个版本。$gvminstallgo1.12.8正在安装go1.12.8...*正在编译...go1.12.8安装成功!安装完成后,输入gvmlist命令,你会看到Go1.12.8的版本和系统自带的Go版本(使用你的包管理器打包的操作系统版本)同时存在.$gvmlistgvmgos(installed)go1.12.8=>system不过此时GVM默认使用的还是系统Go版本,由旁边的=>符号表示。可以使用gvmuse命令切换到新安装的go1.12.8版本。$gvmusego1.12.8Nowusingversiongo1.12.8$goversiongoversiongo1.12.8linux/amd64如果不想每次都输入gvmuse命令来切换版本,可以加上--default参数默认指定这个版本。$gvmusego1.12.8--default是不是,简单!GVM使管理已安装的Go版本变得非常容易,但不仅如此!由于Go1.5使用bootstrapping(用Go编译Go),如果系统环境中根本没有Go命令,直接使用gvminstallgo会报错。所以,你必须先安装Go1.4。#先安装1.4版本,-B表示只安装二进制包。$gvminstallgo1.4-B$gvmusego1.4$exportGOROOT_BOOTSTRAP=$GOROOT#使用GVMpkgset重新安装1.5+版本的$gvminstallgo1.12.8默认情况下,如果通过goget获取包,会下载到$GOPATH目录.src和pkg目录。然后,您可以使用import将其引入您的Go程序。然而,在不同项目中管理同一包的不同版本变得困难。GVM使用“pkgsets”将项目的新目录追加到Go安装版本默认的$GOPATH中,类似于Linux系统上的$PATH,这样可以很好的完成项目之间包的管理和隔离。让我们看一个例子,安装新版本的Go1.12.9。$echo$GOPATH/home/chris/.gvm/pkgsets/go1.12.8/global$gvminstallgo1.12.9Installinggo1.12.9...*Compiling...go1.12.9successfullyinstalled$gvmusego1.12.9Nowusingversiongo1.12.9whenGVMistelled使用新版本安装时,它会将$GOPATH替换为新的,gloablpkgset默认使用。$echo$GOPATH/home/chris/.gvm/pkgsets/go1.12.9/global$gvmpkgsetlistgvmgopackagesets(go1.12.9)=>global虽然默认情况下没有安装额外的包,但全局pkgset中的包对于使用这个特定的包很有用版本Go中的任何项目都可用。现在,假设您要开始一个需要特定包的新项目。首先,使用GVM创建一个名为introToGvm的新pkgset。$gvmpkgsetcreateintroToGvm$gvmpkgsetuseintroToGvmNowusingversiongo1.12.9@introToGvm$gvmpkgsetlistgvmgopackagesets(go1.12.9)global=>introToGvm如上所述,在$GOPATH中添加了一个与pkgset同名的新目录introToGvm。$echo$GOPATH/home/chris/.gvm/pkgsets/go1.12.9/introToGvm:/home/chris/.gvm/pkgsets/go1.12.9/global接下来,验证新目录introToGvm中的目录结构。$cd$(awk-F':''{print$1}'<<<$GOPATH)$pwd/home/chris/.gvm/pkgsets/go1.12.9/introToGvm$lsoverlaypkgsrc注意:新目录看起来很像正常的$GOPATH,新的Go包通过Goget命令下载并添加到pkgset。gorilla/mux已按预期添加到pkgset的$GOPATH目录中,您现在可以在使用该pkgset的项目中使用该模块。卸载GVM或特定版本的Go语言如果你只想卸载某个已安装的Go版本,可以使用以下命令。$gvmuninstallgo1.12.8如果你想完全卸载GVM和所有已安装的Go版本,你可以使用以下命令。#谨慎操作$gvmimplode总结GVM是一个以直观、非侵入式的方式管理Go版本和包的工具。它可以单独使用,也可以使用GVM的Go版本管理功能与其他Go模块管理技术结合使用。GVM通过隔离Go版本和包依赖,让项目开发更简单,降低管理版本冲突的复杂性。