1. go语言概述
Go语言是在2009年11月10日 由Google开源的一门编程语言.号称是"21世纪的C语言"
Go 语言(或称 Golang)是云计算时代的 C 语言。 Go 语言的诞生是为了让程序员有更高的
生产效率, Go 语言专门针对多处理器系统应用程序的编程进行了优化,使用 Go 编译的程
序可以媲美 C 或 C++代码的速度,而且更加安全、支持并行进程。
1.1 golang的语言特点
从C语言中继承了很多设计理念,如表达式语法,结构控制,基础数据类型,传值,指针
开放源代码 ,Go本身是用Go语言编写的
是静态型和编译型
引入
包
的概念,用于组织程序结构自动垃圾回收,一般由Go运行时系统负责
-
天然支持并发
从语言层面就支持并发,使用很简单
goroutine,协程,高效利用CPU
基于CSP并发模型
采用管道通信机制,通过管道channel 实现不同goroutine之间的相互通信
函数可以多返回值
新颖的slice 和defer语句引入
go编写的程序可以直接编译成机器码,不依赖其他库,以及跨平台编译
内置强大的工具链
丰富的标准库, 特别是网络库很强大
内嵌C代码支持
语法简单,代码风格强制统一
1.2 go语言适合做什么
- 区块链应用
- 服务器编程,如: 处理日志,文件系统,数据打包,虚拟机处理
- 网络编程 ,如API应用,web应用,下载应用
- 分布式系统
- 云平台/云服务后端开发
- 内存数据库
1.4 go语言学习资料参考
1.4.1 网络资料
1.4.2 推荐书籍
《Go程序设计语言》
《Go语言学习笔记》
《Go并发编程实战》
2. go程序是怎么运行起来的?
2.1 GO语言的开发环境
无论是Windows 环境或者是Linux环境,亦或是Mac 环境都需要下载Go语言的 SDK ,下载地址如下 Go安装包下载地址 ,具体安装细节参看 安装说明
-
安装包安环好之后有两个环境变量需要注意(GO语言开发这两个环境变量一定要配置好)
- GOROOT : Go语言SDK的安装路径需要配置到系统环境变量中去
- GOAPTH : Go语言项目的存放路径,也就是工作目录
搭建开发环境
window10 系统 搭建步骤(window10 下搭建相对简单)
从 golang中国 下载window的安装包(注意是32位还是64位系统)
下载的安装包可以直接安装(记住自己的安装路径,在配置系统环境变量的时候用到,安装路径尽量不要带中文 )
配置系统环境变量
-
Ubuntu18
-
下载安装包文件
wget https://dl.google.com/go/go1.12.7.linux-amd64.tar.gz
-
安装文件文件
mv go1.12.7.linux-amd64.tar.gz /opt sudo tar -zxvf go1.12.7.linux-amd64.tar.gz
-
配置Golang环境变量
vim /etc/profile
使用vim打开profile文件,并在文件内容最末端添加如下内容
export GOROOT=/opt/go export PATH=$PATH:$GOROOT/bin export GOPATH=$HOME/goproject
重新登录一下再验证golang环境是否安装成功
go env GOARCH="amd64" GOBIN="" GOCACHE="/home/gong/.cache/go-build" GOEXE="" GOFLAGS="" GOHOSTARCH="amd64" GOHOSTOS="linux" GOOS="linux" GOPATH="/home/gong/goproject" GOPROXY="" GORACE="" GOROOT="/opt/go" GOTMPDIR="" GOTOOLDIR="/opt/go/pkg/tool/linux_amd64" GCCGO="gccgo" CC="gcc" CXX="g++" CGO_ENABLED="1" GOMOD="" CGO_CFLAGS="-g -O2" CGO_CPPFLAGS="" CGO_CXXFLAGS="-g -O2" CGO_FFLAGS="-g -O2" CGO_LDFLAGS="-g -O2" PKG_CONFIG="pkg-config" GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build199119735=/tmp/go-build -gno-record-gcc-switches"
-
2.2 GOPATH 简单说明
- GOPATH设置的工作空间,简单的说工作空间是一个对应特定工程的目录,它通常包含src目录,pkg目录,和bin目录
- src目录:用于以代码包的形式组织并保存Go源码文件
- pkg目录:用于存放经由go install命令构建安装后的代码包
- bin目录:与pkg目录类似,在通过go install命令完成安装后,保存由Go命令源码文件生成的可执行文件。
2.3 go语言标准命令概述
bug start a bug report
build compile packages and dependencies
clean remove object files and cached files
doc show documentation for package or symbol
env print Go environment information
fix update packages to use new APIs
fmt gofmt (reformat) package sources
generate generate Go files by processing source
get download and install packages and dependencies
install compile and install packages and dependencies
list list packages or modules
mod module maintenance
run compile and run Go program
test test packages
tool run specified go tool
version print Go version
vet report likely mistakes in packages
2.4 第一个go语言程序
- GOPATH 指向目录的src目录下新建一个文件,文件名HelloWorld.go ,文件内容如下
package main
// 导入fmt包
import "fmt"
func main() {
fmt.Println("hello world")
}
-
代码片段分析
go语言编写的包含代码的文件的后缀是 .go
package main 每个go源代码文件的开头都是package声明的, 指明该文件属于哪个包,go语言的代码是使用包来组织的,包类似于其他编程语言中的库和模块,一个包由一个或者多个.go的源文件组成,放在一个文件夹中,文件夹的名称一般描述了包的作用
import "fmt" 引入一个叫做"fmt"的包,引入该包之后,可以使用fmt包中的函数,例如:fmt.Println()
-
func main(){
} func是一个关键字,表示函数 main是函数名,main函数在go语言中有特殊的作用,main函数表示主函数,也就是整个程序的入口函数
要生成Go可执行程序,必须建立一个名字为main的包,并且在该包中包含一个叫main()的函数(该函数是Go可执行程序的执行起点)
go语言中的main()函数, 不能传递参数,也不能定义返回值
go语言程序中的注释有两种 一种是 :/ 块注释 / 另一种是 // 行注释
- 在cli 命令行下执行
$ go run HelloWorld.go
hello world
- 通过 go run 命令可以直接运行 .go程序(类似执行一个脚本)
- 通过 go build 命令可以对 .go文件进行编译,生成.exe文件