1 认识狗
文章目录
- Go的特性、历史及优缺点
- 不同系统安装Go环境的方法
- Go的基本命令及开发Go的常用工具
1.1 Go语言简介
- 09年正式发布
- 开源静态编译型编程语言
1.1.1 Go简史
- 最早07年由Rob Pike(贝尔实验室UNIX团队成员,曾参与Plan9、 Inferno和 Limbo等项目)、 Robert Griesemer( Java Hotspot,虚拟机、V8引擎开发者之一)和Ken
Thompson(贝尔实验室UNIX团队成员,C语言、UNIX和Plan9创始人之ー,与 Rob Pike
共同开发了UTF-8字符集规范)三人在业余时间联合开发,后来还加入了 lan Lance Taylor
(GCC核心开发人员)、 Russ Cox(曾参与Plan9操作系统的开发)和 Brad Fitzpatrick
( memcached的作者)等人。
Go语言的创始团队对操作系
统和系统编程语言有着非常深刻的理解,这对一门编程语言的开发起到至关重要的作用。
- 09年11月10日正式发布,以BSD协议完全开源,
- 支持Linux和 Mac OS,同年11月Windows。
- 至今Go已完成自举,
- 大量杀手级应用
- (Moby、 Kubernetes、 Gogs、 Grafana、Etcd),
- 两次TIOBE年度编程语言称号(09年和16年)。
- 累计接受3万多次代码提交,近900开发者参与到Go项目
1.1.2 特性
- 作为一门静态类型的编译型语言,与传统开发语言(Java、PHP)
相比具备许多新特性。 - Go有自动垃圾回收,也允许开发人员干预回收操作;
- 有更丰富的内置类型,在错误处理方面语法更加精简高效。
- 函数支持多个返回值,函数也是一种值类型,可作为参数传递。
- Go语言的类型定义参考了C中的struct,但不像C+和Java那样设计一个庞杂的类型系统,仅支持最基本的类型组合,不支持继承和重载。
- 虽然没有类和继承,但通过接口的概念来实现多态
- 对多核处理器的编程优化,
- 从程序与结构方面来实现并发编程,
- Go最重要的特性之一
- 和其他语言一样,有健全的包管理机制,得益于包之间的树状依赖
- Go的初次编译速度媲美C/C++,二次编译速度快于C/C++,
- 接近Python等解释语言的简洁和开发效率
- 执行速度、编译速度和开发效率权衡
- 达到快速编译,高效执行,易于开发
- 支持交叉编译,可在Linux上开发Windows下的应用程序。
- 源码文件格式默认都用UTF-8编码
1.1.3谁适合使用Go语言
- Go适合哪些场景?
- Go可以让Web服务器端的开发更高效,能充分发挥多核计算机性能,拥有更出色的网络环境兼容能力。
- 自动垃圾回收、类型安全、依赖严格、编译快速等特点都是Go的魅力。
- Go的目标就是针对服务器端的Web开发
- 其出色的并发能力,在高性能分布式系统领域,
- 像集群系统、游戏服务器端都把其作为首选开发语言
- 不适合开发强实时性的软件,
- 垃圾回收和自动内存分配导致在实时性上力不从心
1.2 开发环境部署
- 目前支持 FREEBSD Linux
- 安装包
- https://golang.org/dl
1.2.1 环境变量
- 安装Go语言开发环境要设置
- 全局的操作系统环境变量(除非用包管理工具直接安装)
- 系统级环境变量
- $GOROOT:安装位置,可任意位置,只有一个值,必须是绝对路径
- $GOPATH:工作目录,可有多个,类似于工作空间
- 不建议将 SGOPATH和 SGOROOT设置为同一目录
1.2.2 Linux上安装Go语言环境
- 先下载Linux安装包,如图1-1,选择 Linux安装包。
- 下载后,解压
1 当前用户
- 解压后看到go文件夹
- 把这个文件夹移动到你喜欢的位置,
- 编辑 $HOME/.profile
- 放在$HOME/Applications/go/
- $HOME/Workspace/Go/和$HOME/other/Go为工作目录
- $GOPATH可设多个,
- 包管理安装时默认使用第一个为下载目录,
- 建议$GOPATH第一个值设为常用的全局工作目录,
- 以后安装一些Go工具时,它们的bin执行文件可在这里找到
- 第三句把前两个变量输出到系统$PATH变量,
- 当前用户环境中就可随时使用Go环境
2.所有用户
- 如果让所有用户都能全局用这个Go环境变量
- 可把解压出来的go目录移到相应目录,并设置变量
3 用系统包管理安装
- 还可用Linux发行版在软件仓库中提供的Go语言环境安装包,
- 如Debian、 Ubuntu等发行版
- 其他发行版类似,软件包名称不是golang就是go,或组合词
1.2.3 Mac Os上安装
- 图1-1可下载 Mac OS的安装包,
- 双击安装,根据引导安装即可
- 默认安到/usr/local/go/
- 如果之前已安装Go,要卸载原来版本再安装
- 即删除/etc/paths.d/go文件
- Mac OS设置变量与Linux-样,
- 安装结束后用命令査看Go是否安装成功
- $ go version
1.2.4 Windows上安装
- 图1-1下载Windows安装包,一个可执行文件,双击安装
- 默认安装位置C:\Go
- Windows有针对所有用户的系统变量与针对当前用户的用户变量,设置系统变量为例,针对所有用户都有效。
- “系统变量”中单击“新建”,输入“变量名”GOROOT,
- “值”是Go语言路径C:/Go,就配置好Go的安装路径
- 修改PATH,在变量值最后添加%%GOROOT\bin,
- 与其他PATH变量以;分隔
- CMD中输入 go version看是否正常输出版本号
1.3 Go的基本命令及使用
-
输入go help看哪些命令可用
-
go是用于管理Go源码的工具
-
go command [arguments]
- build:编译源代码包和依赖。
- go help [command]每一个命令的使用细节。
- 这些自带的命令实际来自$GOROOT/bin与$GOROOT/pkg/tool/linux_amd64下的可执行文件。
- 1.3.3介绍常用的基础命令。
- 先看GOROOT与GOPATH中有哪些要注意的
1.3.1 GOROOT结构
- api存放公开的变量、常量、函数等API列表,用于Go语言API
检索。 - bin存储标准命令执行文件,如默认的go、 godot、 gofmt三件套。
- doc存放标准库的文档,使用 godot-htp=:6060命令可以启动文档服务,通过本地6060端口即可访问。
- pkg存放编译Go语言标准库生成的文件,
- 里面的文件根据不同系统与架构有所不同,在SGOROOT这个文件中的pkg一般只有标准库的编译缓存文件,这些文件编译Go程序时起到很大作用,例如pkg/tool/linux_amd64/下就有很多 go tool i命令的执行文件。
- src:Go语言自己的源码(包括标准库),阅读源码时就看这