Go语言为并发而生
学习网站:http://www.topgoer.cn/
(本博客仅是复制粘贴来的笔记而已)
go是非常年轻的一门语言,它的主要目标是 “兼具Python 等动态语言的开发速度和C/C++等编译型语言的性能与安全性”
Go语言的并发是基于 goroutine 的,goroutine 类似于线程,但并非线程。可以将 goroutine 理解为一种虚拟线程。Go 语言运行时会参与调度 goroutine,并将 goroutine 合理地分配到每个 CPU 中,最大限度地使用CPU性能。开启一个goroutine的消耗非常小(大约2KB的内存),你可以轻松创建数百万个goroutine。
goroutine的特点:
goroutine
具有可增长的分段堆栈。这意味着它们只在需要时才会使用更多内存goroutine
的启动时间比线程快。goroutine
原生支持利用channel安全地进行通信。goroutine
共享数据结构时无需使用互斥锁。
go适合做什么
- 服务端开发
- 分布式系统,微服务
- 网络编程
- 区块链开发
- 内存KV数据库,例如boltDB、levelDB
- 云平台
Go 的Linux下的安装
1.SSH远程登录你的linux服务器
2.安装 mercurial包
[root@localhost ~]# yum install mercurial
3.安装git包
[root@localhost ~]# yum install git
4.安装gcc
[root@localhost ~]# yum install gcc
5.下载Go的压缩包:(可选择最新的Go版本)
[root@localhost ~]# cd /usr/local/
[root@localhost local]# wget https://go.googlecode.com/files/go1.13.linux-amd64.tar.gz
注意:如果不能翻墙,去go语言资源站 下载相应的包。然后通过ftp上传到此目录。
6.下载完成 or ftp上传完成,用tar 命令来解压压缩包
[root@localhost local]# tar -zxvf go1.13.linux-amd64.tar.gz
7.建立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
8.添加PATH环境变量and设置GOPATH环境变量
[root@localhost go]# vi /etc/profile
加入下面这三行:
export GOROOT=/usr/local/go ##Golang安装目录
export PATH=$GOROOT/bin:$PATH
export GOPATH=/home/go ##Golang项目目录
至此,Go语言的环境已经安装完毕。
10.查看Go语言的环境信息
[root@localhost go]# go env
构建一个go程序
- 进入前面创建的三个目录里面的src目录
- 在src目录下创建一个hello目录,在hello目录中创建一个main.go文件
package main // 声明 main 包,表明当前是一个可执行程序
import "fmt" // 导入内置 fmt
func main(){ // main函数,是程序执行的入口
fmt.Println("Hello World!") // 在终端打印 Hello World!
}
-
在hello目录下执行:go build
go编译器会去 GOPATH的src目录下查找你要编译的hello项目
编译得到的可执行文件会保存在执行编译命令的当前目录下,如果是windows平台会在当前目录下找到hello.exe可执行文件
-
在终端直接执行该hello.exe文件
我们还可以使用-o参数来指定编译后可执行文件的名字。
go build -o heiheihei.exe