一、环境安装
下载地址
选择合适平台后安装,后验证是否安装完成
1 | go version |
设置 go module 为开启状态
1 | go env -w GO111MODULE=on |
设置 go package 国内镜像地址
1 | go env -w GOPROXY=https://goproxy.cn,direct |
二、变量定义
例子
1 | // 正常定义(自动类型推断) |
打印相关 fmt.Printf
| code | desc |
|---|---|
| %v | 原样输出 |
| %T | 打印类型 |
| %t | bool类型 |
| %s | 字符串 |
| %f | 浮点 |
| %d | 10进制的整数 |
| %b | 2进制的整数 |
| %o | 8进制 |
| %x、%X | 16进制 |
| %x | 0-9,a-f |
| %X | 0-9,A-F |
| %c | 打印字符 |
| %p | 打印地址 |
三、内置变量类型
bool
string
数字型
| type | desc |
|---|---|
| (u)int | (无符号)不规定长度,在32位系统就32位,64位系统就64位 |
| (u)int8 | (无符号)规定长度8 |
| (u)int16 | (无符号)规定长度16 |
| (u)int32 | (无符号)规定长度32 |
| (u)int64 | (无符号)规定长度64 |
| unitptr | 指针,长度跟操作系统相关 |
字符型
| type | desc |
|---|---|
| byte | 长度8位(8bit) |
| rune | 长度32位 |
| ps: rune 相当于 go 的 char |
浮点型
| type | desc |
|---|---|
| float32 | |
| float64 | |
| complex64 | 64位的复数 |
| complex128 | 128位的复数 |
四、常量与枚举
1 | // 常量定义 |
五、条件语句
完整版switch
1 | func eval(a,b int,op string) int { |
简洁版switch
1 | func grade (score int) string { |
switch 的 fallthrough 语句
Go里面switch默认相当于每个case最后带有break,匹配成功后不会自动向下执行其他case,而是跳出整个switch, 但是可以使用fallthrough强制执行后面的case代码
1 | switch "a" { |
条件语句
1 | filename := "a.txt" |
六、循环
1 | // 一般 for 循环 |
七、函数
1 | // 一个返回值函数 |
八、指针
1 | // 指针 (两个值交换) |
九、数组
1 | // 数组作为参数传递,长度一定要达到要求 |
十、切片
1 | // 通过slice,更新array |
十一、切片操作
1 | // slice 添加元素 |
十二、Map
1 | // 直接定义 map |
十三、结构体和方法
1 | // 新建结构体类型 |
十四、包和封装
前置命令
1 | mkdir learngo && cd learngo && touch main.go |
main.go 下调用 op 文件夹里面的数据
1 | package main |
op/op.go 内容为
1 | package op |
十五、扩展已有类型
通过别名方法,扩展已有类型
1 | // 定义了新类型Queue,该类型具有几种方法 |
通过组合方法,扩展已有类型
1 | type myStructName struct { |
通过内嵌方法,扩展已有类型
十六、依赖管理 go mod 使用
尝试安装 zap 包
1 | go get -u go.uber.org/zap |
go.mod 文件自动生成依赖目录
1 | module gomodTest |
go.mod 目录下 生成 go.sum 校验文件
*下载的依赖放在了go安装的位置,如 D:\go\bin\pkg\mod*
指定 依赖的版本安装
1 | go get -u go.uber.org/zap@v1.11 |
清除 .sum 文件对历史包的引用
1 | go mod tidy |