Let's Go 1
Go

Go语言简介
Go是谷歌2009发布的第二款开源编程语言。Go语言学习曲线平缓,非常容易上手,而且它能够在不降低开发效率的情况下保证代码运行速度。Go语言是一门编译型语言,它结合了解释型语言的游刃有余,动态类型语言的开发效率,以及静态类型语言的安全性。
Go语言的主要特性有:
自动垃圾回收
更丰富的内置类型
函数多返回值
错误处理
匿名函数和闭包
类型和接口
并发编程
反射
语言交互性
etc.
Go 的常用库
参考:Go语言标准库
net/http:提供了HTTP客户端和服务端的实现
html/template:提供了数据驱动的模板,用于生成可防止代码注入的安全的HTML内容
text/template:提供了数据驱动的模板,用于生成可防止代码注入的安全的文本内容
regexp:提供了正则表达式的实现
database/sql:提供了通用的接口,用于操作SQL数据库
testing:提供了对Go包的自动化测试的支持
go/types:提供了对Go包的类型安全的类型检查
go/ast:提供了对Go包的抽象语法树的操作
go/parser:提供了对Go源代码的解析
go/token:提供了对Go源代码的词法分析
go/doc:提供了对Go源代码的文档提取
etc.
Go 能做什么
网络编程
并发编程
分布式系统
etc.
Go 的安装
我使用的是 Windows 操作系统,所以这里只介绍 Windows 下的安装方法。
官方下载地址:https://golang.org/dl/
国内下载地址:https://golang.google.cn/dl/
Go 中文网下载地址:https://studygolang.com/dl
下载完成后,双击安装包,一路 Next 即可。
安装完成后,打开命令行,输入 go version,如果能够看到类似 go version go1.xx.xx windows/amd64 的输出,说明安装成功。
Go 的环境变量
Go 的环境变量有三个:
GOROOT:Go 的安装目录
GOPATH:Go 的工作目录
GOBIN:Go 的可执行文件目录
GOROOT
GOROOT 是 Go 的安装目录,安装完成后,GOROOT 会自动添加到环境变量中,如果没有添加,可以手动添加。
GOPATH
GOPATH 是 Go 的工作目录,Go 的工作目录可以有多个,但是一般只设置一个。
GOPATH 的目录结构如下:
1 | GOPATH |
bin:存放可执行文件
pkg:存放编译后的包文件
src:存放源代码
GOBIN
GOBIN 是 Go 的可执行文件目录,一般情况下,GOBIN 的值为 $GOPATH/bin。
设置环境变量
在 Windows 系统中,可以通过以下方式设置环境变量:
右键点击“我的电脑”,选择“属性”,在弹出的窗口中选择“高级系统设置”,在弹出的窗口中选择“环境变量”,在弹出的窗口中选择“新建”,在弹出的窗口中输入变量名和变量值,点击“确定”即可。
在命令行中输入
set GOPATH=xxx,xxx 为 GOPATH 的值。
开发工具
IDE
GoLand:GoLand 是 JetBrains 推出的一款 Go 语言 IDE,功能强大,但是收费。
Go Playground
The Go Playground
Better Go Playground
Editor
Visual Studio Code:VS Code 是微软推出的一款轻量级的代码编辑器,功能强大,支持插件扩展,支持 Go 语言开发。
初学者推荐使用 Go Playground,熟悉了 Go 语言的语法后,推荐使用 VS Code/GoLand。
Hello World
创建一个名为 hello.go 的文件,输入以下内容:
1 | package main |
在命令行中输入 go run hello.go,如果能够看到 Hello, World! 的输出,说明安装成功。
基本语法
注释
Go 语言支持单行注释和多行注释。
1 | // 单行注释 |
标识符
Go 语言中的标识符用来命名变量、类型等程序实体。标识符由字母、数字、下划线组成,但是第一个字符不能是数字。Go 语言中的标识符严格区分大小写。
关键字
Go 语言中有 25 个关键字:
1 | break default func interface select |
变量
Go 语言中的变量声明格式为:
1 | var 变量名 变量类型 |
例如:
1 | var a int |
Go 语言中的变量声明格式为:
1 | var 变量名 = 值 |
例如:
1 | var a = 1 |
Go 语言中的变量声明格式为:
1 | var 变量名1, 变量名2, 变量名3 = 值1, 值2, 值3 |
例如:
1 | var a, b, c = 1, "hello", true |
Go 语言中的变量声明格式为:
1 | 变量名 := 值 |
例如:
1 | a := 1 |
上面的例子中,Go 语言会根据变量的值自动推断变量的类型。
命名规范
变量名由字母、数字、下划线组成,但是第一个字符不能是数字。
变量名严格区分大小写。
变量名不能包含空格。
变量名不能以数字开头。
变量名不能使用 Go 语言的关键字。
变量名不能使用 Go 语言的内置函数名。
驼峰命名法
示范:
1 | var myName string |
其他操作
打印内存地址
1 | fmt.Printf("%p\n", &a) |
交换变量的值
1 | a, b = b, a |
空白标识符
1 | _, b = b, a |
多重赋值
1 | a, b, c = 1, "hello", true |
变量的作用域
1 | var a = 1 |
全局变量
1 | var a = 1 |
匿名变量
1 | func main() { |
常量
Go 语言中的常量声明格式为:
1 | const 常量名 = 值 |
例如:
1 | const a = 1 |
常量 iota
Go 语言中的常量 iota 是一个自增的枚举值,从 0 开始。
1 | const ( |
iota 的使用
1 | const ( |
输出:
1 | 1 |
数据类型
Go 语言中的数据类型有:
布尔型:bool
数字类型:int、int8、int16、int32、int64、uint、uint8、uint16、uint32、uint64、uintptr、float32、float64、complex64、complex128、byte、rune
字符串:string
派生类型:指针、数组、结构体、Channel、函数、切片、接口、Map
数据类型的转换
Go 语言中的数据类型转换格式为:
1 | 变量名 := 数据类型(表达式) |
例如:
1 | var a = 1 |