Go语言是谷歌推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发Go,是因为过去10多年间软件开发的难度令人沮丧。
Go语言特性
- 自动垃圾回收
- 内存自动回收,再也不需要开发人员管理内存
- 只需要new分配内存,不需要释放
- 具有更丰富的内置类型
Go语言“不仅支持几乎所有语言都支持的简单内置类型(比如整型和浮点型等)外,还支持一些其他的高级类型,比如字典类型map、数组切片(Slice)。
- 支持函数多返回值
在C,C++中,包括其他的一些高级语言是不支持多个函数返回值的。但是这项功能又确实是需要的,所以在C语言中一般通过将返回值定义成一个结构体,或者通过函数的参数引用的形式进行返回。而在Go语言中,作为一种新型的语言,目标定位为强大的语言当然不能放弃对这一需求的满足,所以支持函数多返回值是必须的。
- 支持高并发
Go语言引入了goroutine概念,它使得并发编程变得非常简单。通过使用goroutine而不是裸用操作系统的并发机制,以及使用消息传递来共享内存而不是使用共享内存来通信,Go语言让并发编程变得更加轻盈和安全。通过在函数调用前使用关键字go,我们即可让该函数以goroutine方式执行,goroutine是一种比线程更加轻盈、更省资源的协程。
- 错误处理
在传统的OOP编程中,为了捕获程序的健壮性需要捕获异常,使用的方法大都是try() catch{}模块,例如, 在下面的java代码中,可能需要的操作是:
1 try{ 2 Statement stmt = ...; 3 } 4 catch(...){ 5 ... 6 } 7 finally{ 8 conn.close(); 9 }
而在Go中引入了三个关键字,分别是 defer、panic和recover,其中使用defer关键字语句的含义是不管程序是否出现异常,均在函数退出时自动执行相关代码。
所以上面你的java代码用Go进程重写只有两行:
1 conn := ... 2 defer conn.Close()
Go语言安装
Go 语言支持以下系统:
- Linux
- FreeBSD
- Mac OS X(也称为 Darwin)
- Window
安装包下载地址为:https://golang.org/dl/
Go语言安装之后,C:\Go目录下一共有9个目录与9个文件,如下图:
api — 目录,包含所有API列表,方便IDE使用
bin— 目录,存放编译后的可执行文件
blog— 目录,
doc— 目录,帮助文档
lib— 目录,
misc— 目录,
pkg— 目录,存放编译后的包文件。pkg中的文件是Go编译生成的
src— 目录,存放项目源文件
注:一般,bin和pkg目录可以不创建,go命令会自动创建(如 go install),只需要创建src目录即可。
常用的命令
go build
go build 命令用于编译我们指定的源码文件或代码包以及它们的依赖包。
go build -o bin/tongbupan go_dev/tongbupan/main
-o :指定编译后存放目录以及名称
go install
go install 命令在内部实际上分成了两步操作:第一步是生成结果文件(可执行文件或者.a包),第二步会把编译好的结果移到 $GOPATH/pkg 或者 $GOPATH/bin。
go run
go run命令可以编译并运行命令源码文件。
注意它不会生成 .exe 文件,只会产生一个临时文件(但),直接在命令行输出程序执行结果,方便用户调试。
go get
go get可以根据要求和实际情况从互联网上下载或更新指定的代码包及其依赖包,并对它们进行编译和安装。
go test
go test 命令,会自动读取源码目录下面名为*_test.go的文件,生成并运行测试用的可执行文件。
go clean
go clean命令会删除掉执行其它命令时产生的一些文件和目录
go doc & godoc
go doc命令可以打印附于Go语言程序实体上的文档。我们可以通过把程序实体的标识符作为该命令的参数来达到查看其文档的目的。
godoc是一个很强大的工具,同样用于展示指定代码包的文档。
其他命令
Go语言还提供了其它有用的工具,例如:
go fix 用来修复以前老版本的代码到新版本,例如go1之前老版本的代码转化到go1
go version 查看go当前的版本
go env 查看当前go的环境变量
go list 列出当前全部安装的package
Go语言开发工具
GoLand
JetBrain的GoLand是一款功能强大的IDE,但只有30天的免费试用。
LiteIDE
LiteIDE是一个简单的开源IDE。值得注意的是,它是Go语言2012年正式版发布的首个IDE,由Qt开发,它看起来感觉类似于Visual Studio和GCC C ++等其他编译器。
由于它是为Golang直接设计的,LiteIDE为开发人员提供了许多有用的功能,包括可配置的构建命令,高级代码编辑器和广泛的Golang支持。其他功能包括代码管理,gdb和Delve调试器,自动完成和使用WordApi的主题,基于MIME类型的系统等等。
VS Code
它是微软开发的广受欢迎的开源IDE,有一个开箱即用的Go扩展可供VS Code Code使用。vscode-go插件为开发人员提供了更多功能,包括与许多Go工具集成。
VS Code通过IntelliSense,内置Git集成,直接从编辑器调试代码等功能提供智能完成功能。VS Code具有高度可扩展性,并通过其许多扩展提供了许多自定义选项。它还提供了几十种语言的支持,这使得它成为了受开发者欢迎的工具。
Eclipse插件GoClipse
GoClipse是Eclipse的插件。使用GoClipse插件,开发人员可以利用流行的Eclipse IDE进行编程。Eclipse IDE和GoClipse插件都是免费和开源的。GoClipse编辑器为开发人员提供了广泛的功能,包括源代码编辑器,项目向导和构建器,以帮助报告编辑器内构建的错误,以及功能齐全的GDB调试器支持。
开发环境搭建
windows:
官网下载go1.6.windows-amd64.msi安装文件,安装位置选择默认C:\Go\
安装结束后配置环境变量Path: C:\Go\bin;
接着创建一个GOPATH环境变量,这个变量很重要,我自己写的代码要放到这个变量中配置的目录中,go编译器才会找到并编译;
继续创建一个GOROOT变量,配合go编译器安装的目 GOROOT:C:\Go\;
完成以上步骤后,打开命令行输入 # go version,就会出现go编译器的版本号。
输入# go env就可以看到正确的go环境。
Linux:
Linux部署golang,首先请在windows上自行安装SSH远程工具,比如Xshell4等。
1.安装mercurial包(mercurial版本管理系统,可以输出hg名字检测是否安装)
sudo apt-get install mercurial 或者# sudo easy_install mercurial
2.安装git
sudo apt-get install git
3.安装gcc
sudo apt-get install gcc
4.下载golang的压缩包
wget https://storage.googleapis.com/golang/go1.6.linux-amd64.tar.gz
tar -zxvf go1.6.linux-amd64.tar.gz -C /home
将解压的文件夹改名为go
添加环境变量: # vi /etc/profile
在profile里面添加如下内容
export GOROOT=/home/go
export PATH=$GOROOT/bin:$PATH
export GOPATH=/home/gopkg
GOPATH和GOROOT修改为你的路径即可.
然后我们刷新环境变量: #source /etc/profile
最后我们验证一下是否安装成功: # go version
5.我们也可以不下载golang的压缩包来进行安装
sudo apt-get install golang
go version
Mac:
官网下载go1.6.darwin-amd64.pkg安装文件进行安装
或者安装homebrew后输入命令:
brew update
brew install mercurial
brew install go
进行安装。
输入# go version,就会出现go编译器的版本号.
输入# go env就可以看到正确的go环境.
第一个Go程序
不能免俗,老规矩来个Hello World
1 package main 2 3 import ( 4 "fmt" 5 ) 6 7 func main() { 8 fmt.Println("Hello World") 9 }
把上面的代码保存到“C:\mygo\src\hello.go”,然后打开命令行,执行:go install hello,即可看到输出结果:Hello World
项目目录
bin : 存放编译后的可执行文件
pkg:存放编译后的包文件
src : 存放项目源文件
请发表评论