前言
由于在公司广泛使用Docker的大环境下,突然对它的编程语言(Go)了解下。并且感觉现在Go语言的应用也是越来越广泛,很多互联网大厂都在使用,目前利用业余时间来学习下,主流还是Java,学明白以后可能考虑转哦?。如果你也感兴趣不如一起来学习。
Go介绍
-
简史
Go语言是Google于2009年正式发布的一款开源的静态编译型语言。Go语言最早于2007年Robert Griesemer(Java HotSpot虚拟机、V8引擎开发者之一)和Ken Thompson(贝尔实验室UNIX团队成员,C语言、UNIX和Plan9创始人之一)与Rob Pike三人在业余时间联合开发。(
老外就是吊
)时至今日Go语言已完成自举,社区生态斐然,包括大量拿的出手的杀手锏级项目(Moby、Docker、Kubernetes、Gogs、Grafana、Etcd)。 -
特性
- Go语言拥有自动垃圾回收功能,同时也允许开发人员干预回收操作。
- Go语言有着更加丰富的内置类型,在错误处理方面语法更加精简高效。
- Go语言函数支持多个返回值,而函数也是一种类型,可以作为参数传递。
- Go语言对多核处理器编程进行了优化,可以从程序与结构方面来实现并发编程。
- Go语言初次编译速度媲美C/C++,甚至二次编译的速度明显快于C/C++,同时又拥有接近于Python等解释型语言的简洁。
-
命名规范
Go语言的项目命名一般采用 【域名+项目名】,例如:github.com/example,这样命名的目录一是可以分割项目,不容易重名,二是能够迅速找到原项目的地址,三是方便获取代码包。
-
代码强制格式化
Go语言有一个特色就是强制代码格式化,在你保存代码之后,可以使用go fmt工具格式化,当然即使没有手动格式化,在编译时,Go语言编译器也会自动格式化所有源代码,这种强制格式化的做法可以有效统一编码风格。
开发环境
目前Go语言支持Linux、FreeBSD、Mac OS、和Windows平台,安装包可以从 https://golang.google.cn/dl/ 下载。
基本命令及使用
-
基本命令
安装Go语言环境后就可以使用go命令了,直接输入go help查看有哪些命令可用:$ go help go是用于管理Go语言源代码的工具。 用法: go command [arguments] 包含的命令如下: - build: 编译源代码包和依赖。 - clean: 删除对象文件。 - doc: 显示Go包或程序实体的文档。 - env: 打印输出Go语言环境的变量信息。 - bug: bug提交程序。 - fix: 修复程序。 - fmt: 格式化源码包中代码。 - generate: 通过扫描Go源码中的go:generate注释来识别要运行的常规命令。 - get: 下载并安装指定的包与依赖。 - install: 编译并安装指定的包与依赖。 - list: 打印指定源码包信息。 - run: 编译并运行Go程序。 - test: 测试一个源码包。 - tool: 运行一个指定的tool。 - version: 打印输出Go环境版本。 - vet: 检查源码包中可能出现的错误。 使用"go help [command]"查看每一个命令的使用细节。
-
目录结构
- GOROOT结构
$GOROOT 作为Go语言环境的根目录,放置了下面这些内容:
& cd $GOROOT && ls -l -rw-r--r-- 1 root wheel 55389 9 26 02:52 AUTHORS # 所有参与Go语言开发的人员名单 -rw-r--r-- 1 root wheel 1339 9 26 02:52 CONTRIBUTING.md # 为Go语言贡献代码的说明 -rw-r--r-- 1 root wheel 84339 9 26 02:52 CONTRIBUTORS # 所有贡献者名单 -rw-r--r-- 1 root wheel 1479 9 26 02:52 LICENSE # Go语言的开源协议 -rw-r--r-- 1 root wheel 1303 9 26 02:52 PATENTS # Go语言专利说明 -rw-r--r-- 1 root wheel 1607 9 26 02:52 README.md # 说明文件 -rw-r--r-- 1 root wheel 397 9 26 02:52 SECURITY.md -rw-r--r-- 1 root wheel 8 9 26 02:52 VERSION # Go语言版本文件 drwxr-xr-x 19 root wheel 608 9 26 02:55 api # Go语言API相关(变量、常量、函数) drwxr-xr-x 4 root wheel 128 9 26 02:55 bin # 用于存储标准命令执行文件,go、godoc、gofmt三件套 drwxr-xr-x 50 root wheel 1600 9 26 02:55 doc # 存放标准库的文档 -rw-r--r-- 1 root wheel 5686 9 26 02:52 favicon.ico # Go语言的图标 drwxr-xr-x 3 root wheel 96 9 26 02:55 lib # 存放一些特殊的库文件 drwxr-xr-x 16 root wheel 512 9 26 02:55 misc # 辅助工具和说明 drwxr-xr-x 6 root wheel 192 9 26 02:55 pkg # 存放Go语言标准库生成的文件 -rw-r--r-- 1 root wheel 26 9 26 02:52 robots.txt # 禁止搜索引擎索引本地启动的Go文档 drwxr-xr-x 71 root wheel 2272 9 26 02:55 src # 存放GO语言自己的源代码 drwxr-xr-x 327 root wheel 10464 9 26 02:55 test # 存放测试验证相关的文件
- GOPATH结构
$GOPATH就是一个工作目录,我们开发GO语言程序就是在这里进行的,这个目录一般有三个文件夹:
- bin: 存放go install生成的可执行文件前面把$GOPATH/bin路径加入PATH环境变量后就可以在全局任意位置使用这个文件夹内的执行文件。 - pkg: 存放go编辑生成的文件。 - src: 存放我们开发的Go项目的源代码,不用工程项目的代码已包名区分。
开发工具
-
Visual Studio Code
来自微软的开源编辑器Visual Studio Code的确是开发Go语言程序的好工具之一,庞大的生态系统使得它不仅仅是一个编辑器,它还拥有大部分Go语言开发过程中使用的工具链。
-
VIM-Go
VIM编辑器是大部分程序员的最爱之一,在VIM的生态中也有一款比较流行的GO语言开发插件----VIM-GO,安装这个插件与安装其他VIM插件的方法一样。
-
Gogland
来自著名的Jetbrains公司开发的IDE(Goland)是一款专门为Go语言开发而设计的IDE。
-
LiteIDE
LiteIDE是一款专门为GO语言开发的跨平台轻量级集成开发环境,LiteIDE是开源的工具,代码托管在github上。
第一个Go程序
现在开始编写第一个程序了,创建一个组织目录,例如 code.local,然后建立一个项目名为hello-word,最终目录路径为$PATH/src/code.local/hello-word
接来下使用vim 编辑一个main.go
然后:wq保存,接来下可以直接使用go run命令运行程序。
到此我们就完成了第一个go程序。随着go语言越来越?,我对它也是很感兴趣,无奈没有太多的时间来学习,只能用周末来抽空看看,希望大家多多支持,如果你也对Go语言感兴趣,不妨点击下关注,一起学习。