Go初探
目录
Go语言的发展历史
go
语言(或Golang
)是Google
开发的开源编程语言,诞生于2006
年1
月2
日下午15
点4
分5
秒,于2009
年11
月开源,2012
年发布go
稳定版。Go
语言在多核并发上拥有原生的设计优势,Go
语言从底层原生支持并发,无须第三方库、开发者的编程技巧和开发经验。
go
是非常年轻的一门语言,它的主要目标是“兼具Python
等动态语言的开发速度和C/C++
等编译型语言的性能与安全性”
很多公司,特别是中国的互联网公司,即将或者已经完成了使用Go
语言改造旧系统的过程。经过Go
语言重构的系统能使用更少的硬件资源获得更高的并发和I/O
吞吐表现。充分挖掘硬件设备的潜力也满足当前精细化运营的市场大环境。
Go
语言的并发是基于goroutine
的,goroutine
类似于线程,但并非线程。可以将goroutine
理解为一种虚拟线程。Go
语言运行时会参与调度goroutine
,并将goroutine
合理地分配到每个CPU
中,最大限度地使用CPU
性能。开启一个goroutine
的消耗非常小(大约2KB
的内存),你可以轻松创建数百万个goroutine
。
goroutine的特点:
1.goroutine
具有可增长的分段堆栈。这意味着它们只在需要时才会使用更多内存。
2.goroutine
的启动时间比线程快。
3.goroutine
原生支持利用channel
安全地进行通信。
4.goroutine
共享数据结构时无需使用互斥锁。
Go语言特性
- 自动垃圾回收
- 更丰富的内置类型
- 函数多返回值
- 错误处理
- 匿名函数和闭包
- 类型和接口
- 并发编程
- 反射
- 语言交互性
Go语言结构
- 包声明
- 引入包
- 函数
- 变量
- 语句
&
表达式 - 注释
package main // 声明 main 包,表明当前是一个可执行程序
import "fmt" // 导入内置 fmt
func main() { // main函数,是程序执行的入口
/* print Hello, World! */
fmt.Println("Hello, World!") // 在终端打印 Hello World!
}
解释:
package main
定义了包名。必须在源文件中非注释的第一行指明这个文件属于哪个包。package main
表示一个可独立执行的程序,每个Go
应用程序都包含一个名为main
的包。import "fmt"
告诉编译器程序运行需要用fmt
包。func main()
是程序开始执行的函数,main
函数是每一个可执行程序所必须包含的,一般来说都是在启动后第一个执行的函数(如果有init()
函数则会先执行该函数)。{}
中"{"
不可以单独放一行。/.../
是注释,在程序执行时将被忽略。//
单行注释,/* ... */
多行注释也叫块注释,不可以嵌套使用,一般用于包的文档描述或注释成块的代码片段。fmt.Println(...)
将字符串输出到控制台,并在最后自动增加换行字符\n
。用fmt.Print("hello, world\n")
可以得到相同的结果。
与其他主要编程语言的差异
- 退出返回值
Go
中main
函数不支持任何返回值- 可以通过
os.Exit
来返回状态
Go的环境搭建
在开始我们的Go语言学习之旅,第一步当然是开发环境的搭建,工欲善其事,必先利其器。
Go
的安装
go
官方:
https://golang.org/
下载地址:
https://golang.org/dl/
安装文档:
https://golang.org/doc/install
Go语言Windows系统开发环境配置
Go
是开源的,在Go
的官网上,对于windows
操作系统有两种安装方法,也就是提供了不同的文件:
我们可以看到一种是.msi
,一种是.zip
。
对于windows
操作系统不熟悉的人来说,这里有必要介绍一下什么是.msi
:
msi
就是microsoft installer
的简写,是微软格式的安装包。
两种包有何区别呢?
.zip
下载后,我们解压,然后需要手动配置环境变量。
.msi
下载后,安装,会自动帮我们把环境变量配置好。
下载就分别就两种格式的包进行说明。
zip格式安装
解压到某一位置,比如C:\Go
这里需要注意,如果你指定的位置不是C:\Go
,你还必须设置GOROOT
这个环境变量,指向你所解压的位置。
PATH
环境变量中加入路径:C:\Go\bin
msi格式安装
下载完成后直接安装就可以了。
安装成功后,cmd
中输入go version
,就会出现版本情况
接下来也要配置GOPATH
,和上面的方法一样,这里不再赘述了。
应用
在D:\go_workspace\src
下新建一个hello.go
,
键入代码:
package main
import "fmt"
func main() {
fmt.Printf("hello, world\n")
}
然后运行
补充
其实还有一些环境变量可以设置,这就因人而异了:
GOROOT
:Go
的安装目录GOPATH
:用于存放Go
语言Package
的目录,这个目录不能在Go
的安装目录中GOBIN
:Go
二进制文件存放目录,写成%GOROOT%\bin
就好GOOS
:操作系统GOARCH
:指定系统环境,i386
表示x86
,amd64
表示x64
PATH
:需要将%GOBIN%
加在PATH
变量的最后,方便在命令行下运行Go
然后可以在cmd
中输入go env
查看环境变量的配置情况。
Go语言Linux开发环境配置
-
SSH远程登录你的linux服务器
-
安装 mercurial包
[root@localhost ~]# yum install mercurial
- 安装git包
[root@localhost ~]# yum install git
- 安装gcc
[root@localhost ~]# yum install gcc
- 下载
Go
的压缩包:(可选择最新的Go
版本)
[root@localhost ~]# cd /usr/local/
[root@localhost local]# wget https://go.googlecode.com/files/go1.15.linux-amd64.tar.gz
注意:如果不能翻墙,去go
语言资源站下载相应的包。然后通过ftp
上传到此目录。
- 下载完成 or
ftp
上传完成,用tar
命令来解压压缩包。
[root@localhost local]# tar -zxvf go1.13.linux-amd64.tar.gz
- 建立
Go
的工作空间(workspace
,也就是GOPATH
环境变量指向的目录)
GO
代码必须在工作空间内。工作空间是一个目录,其中包含三个子目录:
src ---- 里面每一个子目录,就是一个包。包内是Go的源码文件
pkg ---- 编译后生成的,包的目标文件
bin ---- 生成的可执行文件
这里,我们在/home
目录下, 建立一个名为go
(可以不是go
, 任意名字都可以)的文件夹, 然后再建立三个子文件夹(子文件夹名必须为src
、pkg
、bin
)。
[root@localhost local]# cd /home/
[root@localhost home]# mkdir go
[root@localhost home]# cd go/
[root@localhost go]# mkdir bin
[root@localhost go]# mkdir src
[root@localhost go]# mkdir pkg
- 添加
PATH
环境变量and
设置GOPATH
环境变量
[root@localhost go]# vim /etc/profile
加入下面这三行:
export GOROOT=/usr/local/go ##Golang安装目录
export PATH=$GOROOT/bin:$PATH
export GOPATH=/home/go ##Golang项目目录
保存后,执行以下命令,使环境变量立即生效:
[root@localhost go]# source /etc/profile ##刷新环境变量
至此,Go
语言的环境已经安装完毕。
- 验证一下是否安装成功,如果出现下面的信息说明安装成功了
[root@localhost go]# go version ##查看go版本
go version go1.15.5 linux/amd64
Go语言Mac开发环境配置
MAC
有两种方式安装Go
1. 通过brew
安装
在终端输入brew install go
或者brew install golang
,安装之前可以用 brew info go
查看版本信息
2. Mac
上,使用pkg
文件,下载即可:
直接双击安装就可以了
测试
之后进行测试
打开Mac
上的终端,输入命令:go version
如下:
go version
go version go1.15.5 darwin/amd64
配置环境
安装完sdk
之后接下来便是配置环境变量了,打开终端输入cd ~
进入用户主目录,之后输入ls -all
命令查看是否存在.bash_profile
文件,存在的话就是使用vim .bash_profile
打开并编辑该文件。根据自己实际情况,内容如下:
export GOPATH=/Users/local/Documents/workspace/
export GOBIN=GOPATH/binexportPATH=PATH:$GOBIN
GOPATH
:日常开发的根目录。
GOBIN
:是GOPATH
下的bin
目录
IDE选择
IDE
需知:vscode
与goland
,推荐使用vscode
,vscode
免费,goland
收费。
vscode
地址:https://code.visualstudio.com/
goland
地址:https://blog.jetbrains.com/go/
- 不管是哪个系统,需要配置
go
安装环境到path
环境变量里面。 goland
只需要选择go
对应的sdk
配置即可,也就是把go
安装的路径添加进去,使用安装的go
环境进行编译,不需要安装任何额外插件。
vscode
需要安装额外插件,在插件市场里面直接搜索go
,随后进行安装即可,在安装的时候容易出现下载失败问题,此时需要更换为国内源,如下设置:
windows设置:
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct
MacOS or Linux
export GO111MODULE=on
export GOPROXY=https://goproxy.cn
vscode 安装所有工具-插件
在vscode
中按下 ctrl/command + shift +p
打开命令窗口,输入goin
然后选install/Update tools
,弹出go
插件列表,选择 全部勾选,确认安装。
不出意外会失败,因为vscode
利用go get
下载,而部分插件在国内访问不到,所以需要配置代理。
终端输入:
设置你的 bash 环境变量
echo "export GOPROXY=https://goproxy.io" >> ~/.profile && source ~/.profile
#如果你的终端是 zsh,使用以下命令
echo "export GOPROXY=https://goproxy.io" >> ~/.zshrc && source ~/.zshrc
重新执行以上 vscode
安装即可成功。