1. 认识go语言
1.1 背景
Go语言是一个开源的编程语言,它能让构造简单,可靠且高效的软件变得容易。go是从2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持开发,后来还加入了Lan Lance Taylor, Russ Cox等人,并最终于2009年11月开源,在2012年早些时候发布了Go1稳定版本。现在Go的开发已经是完全开放的,并且有一个活跃的社区。
1.2 语言特色
1) 简洁,快速,安全
简洁:Go的语法简单,学习曲线较低,容易上手。
速度:Go是编译型语言,代码的执行速度非常快。
安全:Go提供了内存安全的内存模型,能够防止数据竞争。
2) 并行,有趣,开源
并发编程:Go内建了go routine的概念,它可以轻松地编写并发程序。通过go routine(协程),你可以在一个线程(或一个操作系统的进程)中并发地运行多个任务。
routine(协程):这是一个和线程不完全相同的概念。协程允许开发者以同步的方式编写代码,但在底层却能够以异步的方式执行。举个例子,协程可以启动10万个,然后对应的底层线程数量是可以控制的(通过编程控制),协程启动10万个,对内存没啥消耗。但是线程启动10万个,按照每个平均2M的堆栈空间(操作系统默认分配)计算,计算机内存成本会非常高。协程是程序员代码根据业务逻辑进行调度控制的,线程和进程是操作系统进行调度控制的。协程是一个循环,会不停的执行(如果程序没有控制时钟或者事件选择的话),运行阶段,协程之间是线程公用的,线程不安全的,你也可以认为协程就是某一段时间的某个线程的执行路径。
3) 内存管理,数组安全,编译迅速
自动垃圾回收:go拥有自动的垃圾回收机制,这就意味着你不需要担心内存管理的问题。
编译至一个可执行文件:Go可以将代码编译为一个独立的可执行文件,这使得部署和分发应用程序变得简单。
静态类型:Go是一种静态类型的语言,这就意味着所有的变量和表达式都有一个在编译时就确定的类型。
标准库:Go的标准库非常丰富,提供了网络编程、文件I/O、数据库访问等众多的功能。
1.3 用途
1) 服务器编程,以前你如果使用C或者C++做的那些事情,用Go来做很合适,例如处理日志、数据打包、虚拟机处理、文件系统等。
2) 分布式系统、数据库代理器、中间件等,例如Etcd。
3)网络编程,这一块目前应用最广,包括Web应用、API应用、下载应用,而且Go内置的net/http包基本上把我们平常用到的网络功能都实现了。
4)数据库操作
5)云平台,目前国外很多云平台在采用Go开发,CloudFoundy的部分组建,前VMare的技术总监自己出来搞的apcera云平台。
6)游戏服务端的开发。
一些使用go语言开发的框架:
Nsq:Nsq 是由Go语言开发的高性能、高可用消息队列系统,性能非常高,每天能处理数十亿条的消息;
Docker:基于lxc的一个虚拟打包工具,能够实现PAAS平台的组建。
Packer:用来生成不同平台的镜像文件,例如VM、vbox、AWS等,作者是vagrant的作者
Skynet:分布式调度框架
Doozer:分布式同步工具,类似ZooKeeper
Heka:mazila开源的日志处理系统
Cbfs:couchbase开源的分布式文件系统
Tsuru:开源的PAAS平台,和SAE实现的功能一模一样
Groupcache:memcahe作者写的用于Google下载系统的缓存系统
God:类似redis的缓存系统,但是支持分布式和扩展性
Gor:网络流量抓包和重放工具
2. 安装步骤
2.1 下载go语言安装包
go语言支持的系统:
- Linux
- FreeBSD
- Mac OS X(也称为 Darwin)
- Windows
安装包下载地址为:All releases - The Go Programming Language。
如果打不开可以使用这个地址:All releases - The Go Programming Language。
以下是每个系统对应的包名:
Windows | go1.4.windows-amd64.msi |
Linux | go1.4.linux-amd64.tar.gz |
Mac | go1.4.darwin-amd64-osx10.8.pkg |
FreeBSD | go1.4.freebsd-amd64.tar.gz |
是什么系统下载对应安装包即可
2.2 Linux/FreeBSD/Mac 系统
1. 下载二进制包:go1.4.linux-amd64.tar.gz
2.将下载的二进制包解压至 /usr/local目录(mac系统下载后双击安装即可,修改环境变量)
tar -C /usr/local -xzf go1.4.linux-amd64.tar.gz
3. vim编辑 ~/.bash_profile 或者 /etc/profile,输入i ,切换成insert模式,并将以下命令添加该文件的末尾,然后点击esc,输入:wq! 保存退出
export PATH=$PATH:/usr/local/go/bin
4. 添加后需要执行
source ~/.bash_profile 或 source /etc/profile
2.3 Windows系统
Windows 下可以使用 .msi 后缀(在下载列表中可以找到该文件,如go1.4.2.windows-amd64.msi)的安装包来安装。
默认情况下 .msi 文件会安装在 c:\Go 目录下。你可以将 c:\Go\bin 目录添加到 Path 环境变量中。添加后你需要重启命令窗口才能生效。
2.4 安装完成测试
输入 go version
mac系统显示:go version go1.22.1 darwin/arm64 表示安装成功
写一个简单的go程序测试一下:
package main
import "fmt"
func main() {
/* 这是我的第一个简单的程序 */
fmt.Println("Hello, World!")
}
输出 : Hello, World!
大功告成!