go 基础知识

go 结构

package pkg_name定义包名,即程序属于哪个包,每个 go 文件第一行 package main表示一个可独立执行的程序 每个 go 的应用程序必须包含一个 main 包 import pkg_n

go 结构体

定义结构体 访问结构体成员变量 定义结构体 struct 是域的集合 定义结构体需要使用 type 和 struct 关键字 package main import "fmt" type vertex struct { X int Y int } func main() { fmt.Println(vertex{1, 2}) } 声明结构体变量:结构体

go 范围

range 关键字用于 for 循环中迭代数组 array、切片 slice、通道 channel 或 集合 map 的元素 在数组和切片中返回元素的索引和索引对应的值的拷贝,在集合中返回 key-value

go 运算符

算术运算符: +, -, *, /, %, ++, – 关系运算符: ==, !=, >, <, >=, <= 逻辑运算符: &&, ||, ! 位运算符: &, |, ^(异或), <<, >> 赋值运算符: =, +=, -=, *=, /=, %=, <<=, >>=, &=, |=, ^= 其他运算

go 递归函数

定义 func myRecursion() { //myRecursion() }

go 错误处理

go 使用 error 值表示错误状态,通过内置的错误接口提供了非常简单的错误处理机制 error 是一个接口类型,定义 type error interface { Error() string } 可在编码中通过实现 error 接口类型生成错

WaitGroup 和 worker pool

WaitGroup worker pool WaitGroup WaitGroup 用于等待一个集合的 goroutine 执行完毕。 WaitGroup 是一个结构体,内部使用了一个计数器,使用 Add 可以增加计数,使用 Done 可以减少计数。当计数为 0 的时候,Wa

信道

channel 单向 channel close 关闭信道 有缓冲的 channel channel channel 可认为是带有类型的 pipe,goroutine 通过 channel 通信 每个 channel 有一个关联的类型,这个类型是 channel 允许传输的数据类

安装 go

Linux 安装和使用 go 安装 设置工作目录 GOPATH 测试安装 安装其他版本 Windows 安装和使用 go MacOS 安装和使用 go 卸载旧版本 命令 vscode 使用 go 配置代理 Linux 安装和使用 go 安装 下载安装包 选

异常处理

defer 使用 defer 栈 panic 使用 recover 使用 Go 不支持 try..catch..finally 这种异常。使用多值返回来返回错误 在极端情况下才用异常(如除数为 0),异常处理使用了 defer,panic,r