go语言介绍
go语言出身豪门,有IT界三位大佬合作开发。是一种C系语言。具有高并发的特性。性能优越。
go语言在云计算领域有着极大的市场空间,在云计算领域。明星项目,docker,eted, kubernetes,harbor皆使用go编写。go强大的网络编程,原生支持高并发。
go的优点
- 可直接编译成机器码,不依赖其他库
- 静态类型语言,但是有动态语言的感觉,静态类型的语言就是可以在编译的时候检查出来隐藏的大多数问题,动态语言的感觉就是有很多的包可以使用,写起来的效率很高
- 语言层面支持并发,这是Go语言的最大的特色,天生支持并发
- 内置runtime,支持垃圾回收机制
- 简单易学,有C语言的基因,Go语言有25个关键字,但是表达能力极强
- 丰富的标准库,内置大量库,特别是网络库非常强大
- 内置强大工具,使review变的简单,可以使代码格式一模一样
- 跨平台编译,可以不依赖与系统信息
- 内置C支持
go存在的不足
当然go相对其它语言也有很多的不足,可能最大的一点就是很多程序员入门时遇到的一个问题GOPATH,需要配置工作空间。
另一个大的不足之处就是第三方包的管理,虽然现在有一些方案,但都不十分完美。
多版本环境安装
go运行环境安装文章很多,在此介绍一种多版本管理的安装方式gvm.
gvm 是一个go语言多版本管理工具,可以方便的切换语言版本环境。
安装gvm
bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)
使用 GVM
$gvm
Usage: gvm [command]
Description:
GVM is the Go Version Manager
Commands:
version - print the gvm version number
get - gets the latest code (for debugging)
use - select a go version to use (--default to set permanently)
diff - view changes to Go root
help - display this usage text
implode - completely remove gvm
install - install go versions
uninstall - uninstall go versions
cross - install go cross compilers
linkthis - link this directory into GOPATH
list - list installed go versions
listall - list available versions
alias - manage go version aliases
pkgset - manage go packages sets
pkgenv - edit the environment for a package set
GOPATH管理
在多项目环境下开发时,常设置多个workspace,通过gvm可以动态的切换环境变量。
- 创建pkgset
gvm pkgset create dev1
``
- 切换到该配置下
gvm pkgset use dev1
- 设置GOPATH
gvm pkgenv dev1
会显示dev1的相关环境变量的配置信息,修改其中的GOPATH和PATH的环境变量的信息,将要设置的workspace的工作目录的路径添加到对应配置信息的前边。