Go语言介绍
go语言是什么
2009年11月10日,谷歌研发。
go(golang)是云计算时代的C语言。
介于C语言(编译型语言,执行速度快)和python语言(解释型语言,擅长快速开发)之间。
go语言优势
go语言是编译型语言,不依赖其他包,部署就是扔一个包上去
go语言天生支持并发
go语言gc垃圾回收机制
丰富的标准库,跨平台编译,内嵌C支持
go适合做什么
服务器编程,例如:处理日志,数据打包,虚拟机处理,文件系统
分布式系统,数据库代理器
网络编程,web应用
内存数据库,例如:google开发的groupcache,couchbase的部分组件
云平台,CloudFoundy的部分组件,前Vmare的技术总监自己开发的apcera云平台
环境搭建
安装和配置
下载地址:https://studygolang.com/dl
windows:
根据需要下载32位(386)或者64位(amd64);
以zip版本为例:
下载后解压,保证及解压后的文件夹全路径内没有中文和空格;
进入解压文件,将bin文件路径配置到环境变量中;
配置完成后打开dos窗口或者powershell,输入go version,回车,出现版本号后说明go变量配置成功
Linux:
查看系统版本:uname -a
以tar.gz版本为例:
拷贝压缩包到指定目录:cp go...tar.gz /opt
解压文件:tar -zxvf go.....tar.gz
解压后进入bin文件下,输入./go version,可以看到版本
配置环境变量:sudo vim /etc/profile
export GOROOT=/opt/go
export PATH=$PATH:$GOROOT/bin
export GOPATH=$HOME/goproject
注销重新登录,使用go version查看环境变量是否配置成功
标准命令概述
bug :创建一个bug报告
执行完命令后,会用浏览器访问github.com/golang/go 的issue。自动填写一些内容,引导你如何提交一个bug报告
build:用于编译给定的代码包或Go语言源码文件及其依赖包
默认情况下,会在命令所在目录生成一个当前操作系统对应的可执行文件
clean:用于清除执行其他go命令后遗留的目录和文件
前面提到的build命令和下面的test命令会生成一些文件和目录,clean会清理掉这些文件,包括build命令生成可执行文件
doc:打印包中的文档和标记符
打印出包或指定文件的说明文档,加上-all 参数,可以看到包里的所有函数列表和文档。go doc -all -u
env:用于打印go语言环境信息
查看各个go的开发环境参数,忘记GOPATH和GOROOT路径就可以用这个打印出来
fix:用于执行go tool fix 命令以修正给定代码包的源码文件中包含的过时语法和代码调用
如果你升级了go,担心以前的代码不兼容,那么就可以用 go fix
fmt: 主要是用来帮你格式化所写好的代码文件。
go的代码格式标准是唯一的,用go fmt可以格式化代码文件,很多IDE就是调用这个命令来在保存文件时调整格式
generate:根据指令生成go文件
查找当前包相关的源代码文件,找出所有包含”//go:generate”的注释,提取并执行该特殊注释后面的命令,类似shell执行命令
get :下载和安装go包以及其依赖包的命令
go get <包的路径>
install:编译和安装包及其依赖包
可执行文件会被安装在$GOPATH/bin目录下
list :列出目录下的所有包和模块,每行一个
mod :初始化模块
run : 运行go项目
它会编译包,然后直接运行起来,不会在当前目录生成二进制文件
test:运行调试
用于运行_text.go文件中的Test开头并且参数为 *testing.T的函数
tool :运行指定的go工具
version:查看当前go版本
vet:查看包中可能出现的错误
学习资料
Go语言官网(需要翻墙):https://golang.org/
Go中文社区:https://studygolang.com
go中文在线文档:https://studygolang.com/pkgdoc
第一个Go程序
Hello Go
//go语言以包作为管理单位
//每个文件必须先声明包
//程序必须有一个main包
package main import ( "fmt" )
//入口函数 func main(){ //左括号必须和函数名在同一行
//打印
//"hello go"打印到屏幕,Println()会自动换行
//调用函数,大部分都需要导入包 fmt.Println("Hello Go!") }
命令行运行程序
1.go build text.go //编译go代码,生成一个可执行程序,然后运行可执行程序即可
2.go run text.go //直接运行程序,不生成可执行文件