go语言学习
一、原生使用Go语言机型开发的部分项目:
- Docker
- Go语言
- Kubernetes
- etcd
- beego
- martini
- codis
- delve
二、Go语言标准库常见包
Go语言标准库包名 | 功能 |
---|---|
bufio | 带缓冲的I/O操作 |
bytes | 实现字节操作 |
container | 封装堆、列表和环形列表等容器 |
crypto | 加密算法 |
database | 数据库驱动和接口 |
debug | 各种调试文件格式访问及调试功能 |
encoding | 常见算法如JSON, XML, Base64等 |
flag | 命令行操作 |
fmt | 格式化操作 |
go | Go语言的词法,语法树,类型等。可通过这个包进行代码信息提取和修改 |
html | HTML转义及模板系统 |
image | 常见图形格式的访问及生成 |
io | 实现I/O原始访问接口及访问封装 |
math | 数学库 |
net | 网络库,支持Socket, HTTP, 邮件, RPC, SMTP等 |
os | 操作系统平台不依赖平台操作封装 |
path | 兼容各操作系统的路径操作实用函数 |
plugin | 插件系统。支持将代码编译为插件,按需加载 |
reflect | 语言反射支持。可以动态获得代码中的类型信息,获取和修改变量的值 |
regexp | 正则表达式封装 |
runtime | 运行时接口 |
sort | 排序接口 |
strings | 字符串转换,解析及实用函数 |
time | 时间接口 |
text | 文本模板及token词法器 |
三、第一个GO语言程序
在go语言中,所有函数都以关键字 func开头的,定义格式如下所示:
func 函数名(参数列表) (返回值列表){
函数体
}
格式说明如下:
- 函数名:由字母、数字、下划线 _ 组成,其中,函数名的第一个字母不能为数字,并且,在同一个包内,函数名称不能重名。
- 参数列表:一个参数由参数变量和参数类型组成,例如
func foo(a int, b string)
。 - 返回值列表:可以是返回值类型列表,也可以是参数列表那样变量名与类型的组合,函数有返回值时,必须在函数体中使用return 语句返回。
- 函数体: 能够被重复调用的代码片段。
注意:go语言函数的左大括号 {
必须和函数名称在同一行,否则会报错。
注意,Println 函数打印完成后会自动换行,ln是 line的缩写。
四、Go语言程序的编译和运行
go build 命令
go build
命令用来启动编译,它可以将go语言程序与相关依赖编译成一个可执行文件,语法如下:
go build fileName
其中fileName 为所需要的参数,可以是一个或者多个Go源文件名(当有多个参数时需要使用 空格 将两个相邻的参数隔开),也可以省略不写。
使用 go build 命令进行编译时,不同参数的执行结果也是不同的。
1)当参数不为空时
如果fileName为同一 main包下的所有源文件名(可能有一个或者多个),编译器将生成一个与第一个fileName同名的可执行文件(如执行go build abc.go def.go...
会生成一个 abc.exe文件);如果fileName为非main包下的源文件名,编译器将只对该包进行语法检查,不生成可执行文件。
2)当参数为空时
如果当前目录下存在 main包,则会生成一个与当前目录名同名的 “目录名.exe” 可执行文件(如在 hello 目录中执行go build
命令时,会生成 hello.exe文件);如果不存在 main包,则只对当前目录下的程序源码进行语法检查,不会生成可执行文件。
go run 命令
go run
命令将编译和执行指令合二为一,会在编译之后立即执行Go语言程序,但是不会生成可执行文件。
go run
命令的语法格式如下:
go run fileName
其中fileName 为所需要的参数,参数必须是同一 main包下的所有源文件名,并且不能为空。
go install 安装命令
go run 命令运行,它会在编译后直接运行Go语言程序,编译过程中会产生一个临时文件,但不会生成可执行文件,这个特点很适合用来调试程序。
go build 命令可以将Go语言程序代码编译成二进制的可执行文件,但是需要我们手动运行该二进制文件;
五、Goland 常用快捷键
1)文件操作相关的快捷键
快捷键 | 作用 |
---|---|
Ctrl + E | 打卡最近浏览过的文件 |
Ctrl + N | 快速打开某个struct 结构体所在的文件 |
Ctrl + Shift + N | 快速打开文件 |
Shift + F6 | 重命名文件夹、文件、方法、变量名等 |
2)代码格式化相关的快捷键
快捷键 | 作用 |
---|---|
Ctrl + Alt + L | 格式化代码 |
Ctrl + 空格 | 代码提示 |
Ctrl + / | 单行注释 |
Ctrl + Shift + / | 多行注释 |
Ctrl + B 或 F4 | 快速跳转到结构体或者方法的定义位置(需将光标移动到结构体或方法的名称上) |
Ctrl + “+ 或 -” | 可以将当前(光标所在位置)的方法进行展开或折叠 |
3)查找和定位相关的快捷键
快捷键 | 作用 |
---|---|
Ctrl + R | 替换文本 |
Ctrl + F | 查找文本 |
Ctrl + Shift + F | 全局查找 |
Ctrl + G | 显示当前光标所在行的行号 |
Ctrl + Shift + Alt + N | 查找类中的方法或变量 |
4)编辑代码相关的快捷键
快捷键 | 作用 |
---|---|
Ctrl + J | 快速生成一个代码片段 |
Shift + Enter | 向光标的下方插入一行,并将光标移动到该行的开始位置 |
Ctrl + X | 删除当前光标所在行 |
Ctrl + D | 复制当前光标所在行 |
Ctrl + Shift + 方向键上或下 | 将光标所在的行进行上下移动(也可以使用Alt + Shift + 方向键上或下) |
Alt + 回车 | 自动导入需要导入的包 |
Ctrl + Shift + U | 将选中的内容进行大小写转化 |
Alt + Insert | 生成测试代码 |
Alt + Up/Down | 快速移动到上一个或下一个方法 |
Ctrl + Alt + Space | 类名或接口名提示(代码提示) |
Ctrl + P | 提示方法的参数类型(需在方法调用的位置使用,并将光标移动到()的内部或两侧) |
5)编辑器相关的快捷键
快捷键 | 作用 |
---|---|
Ctrl + Alt + left/right | 返回至上次浏览的位置 |
Alt + left/right | 切换代码视图 |
Ctrl + W | 快速选中代码 |
Alt + F3 | 逐个向下查找选中的代码,并高亮显示 |
Tab | 代码标签输入完成后,按Tab, 生成代码 |
F2 或 Shift + F2 | 快速定位错误或警告 |
Alt + Shift + C | 查看最近的操作 |
Alt + 1 | 快速打开或隐藏工程面板 |
六、GO语言基本语法
1.变量的声明(使用var关键字)
go的基本类型有:
- bool
- string
- int、 int8、int32、int64
- uint、uint8、uint32、uint64、uintptr
- byte //uint8的别名
- rune //int32 的别名 代表一个Unicode码
- float32、float64
- complex64、complex128
当一个变量被声明之后,系统会自动赋予它该类型的零值: int为0,float为 0.0, bool为false, string为空字符串,指针为nil等。所有的内存在Go中都是经过初始化的。
变量的命名规则遵循小驼峰命名法,即首字母小写,例如:numShips和 startDate.
变量的声明有三种方式:
1.1 标准格式
var 变量名 变量类型
例如:
var name type
var a, b *int
1.2批量格式
var (
a int
b string
c []float32
d func() bool
e struct {
x int
}
)
使用关键字 var 和括号,可以将一组变量定义放在一起。
1.3 简短格式
名字 := 表达式
例如:
i,j := 0,1
func main() {
x := 100
a,s := 1, "abc"
}
注意,简短模式有以下限制:
- 定义变量,同时显示初始化。
- 不能提供数据类型。
- 只能用在函数内部。
简短变量声明大多用于局部变量的声明和初始化。var形式的声明语句往往用于需要显示指定变量类型的地方,或者因为变量稍后会被重新赋值而初始值无关紧要的地方。
2.变量的初始化
每个变量会初始化其类型的默认值,例如:
- 整型和浮点型变量的默认值为0和0.0。
- 字符串变量的默认值为空字符串。
- 布尔型变量默认为bool。
- 切片、函数、指针变量的默认为nil。
也可以在变量声明时赋予变量一个初始值。