Go
文章平均质量分 82
golang
vk-fengz
学习笔记 记录,可能有些不全面,见谅
展开
-
【Go实战】02 并发 协程
目录 1. 协程同步问题 1.1. 问题描述: 1.1.1. 主协程先退出, 从协程任务未完成: 1.2. 解决方法: 1. 协程同步问题 –面试准备 参考: Go 并发实现协程同步的多种解决方法 镜像问题: C 线程同步的四种方式(Linux) 1.1. 问题描述: 1.1.1. 主协程先退出, 从协程任务未完成: 因为: 主协程退出以后, 从协程跟着退出; 补充: 在默认情况下,每个独立的 Go 应用运行时就创建了一个 Go 协程, 其 main 函数就在原创 2021-07-21 08:34:10 · 81 阅读 · 0 评论 -
【Go实战】01 字符串操作
目录 1. 常用内置函数 1.1. len() 2. 字符串 2.1. 连接字符串 3. 正则表达式 4. 文件读取 4.1. 配置文件 1. 常用内置函数 1.1. len() 概述len 用来获取字符串、切片、数组、通道、字典类型变量的内容长度,不同的数据类型,长度计算规则不一样。 对于切片、字典、数组、通道类型的变量,它们中每一个元素就是一个长度; 对于 string 类型变量,它们每一个字节是一个长度; 对于 rune 类型切片变量,它们每一个 字符 是一个长度, r原创 2021-07-19 11:24:41 · 83 阅读 · 0 评论 -
【Go源码】01 标准库
目录 1. fmt 1.1. 格式化输出 1.2. 基本函数 1.3. 特殊实现 2. log 2.1. 简介 2.2. 输出到 2.3. 自定义logger 3. sync 3.1. 概述 3.2. 代码 学习资料 Golang标准库文档 1. fmt 1.1. 格式化输出 fmt包含有格式化I/O函数,类似于C语言的printf和scanf。格式字符串的规则来源于C,但更简单一些 1.2. 基本函数 print Println 1.3. 特殊实现 2.原创 2021-04-29 09:36:16 · 233 阅读 · 1 评论 -
【Go进阶】内存申请
目录 1. make & new 1.1. 区别 1.2. make用法与区别 1.3. new 1.4. 其他 1. make & new 1.1. 区别 总结: make 仅用来分配及初始化类型为 slice、map、chan 的数据。new 可分配任意类型的数据. new 分配返回的是指针,即类型 *Type。make 返回引用,即 Type. new 分配的空间被清零, make 分配空间后,会进行初始化. 1.2. make用法与区别 概述: gol原创 2021-07-19 10:44:11 · 1090 阅读 · 0 评论 -
【Go进阶】go垃圾回收
目录 1. Go垃圾回收机制 – GC 1.1. 概述 1.2. 三色标记法 1.2.1. 介绍 2. 垃圾回收机制 1. Go垃圾回收机制 – GC 1.1. 概述 以下是Golang GC算法的里程碑: STW Mark STW, Sweep 并行 三色标记法 hybrid write barrier 经典的GC算法有三种: 引用计数(reference counting)、 标记-清扫(mark&sweep)、 复制收集(CopyandCollection)。 参原创 2021-07-14 21:15:47 · 81 阅读 · 0 评论 -
【Go进阶】03 并行编程
目录 1. Goroutine 2. Memory model 3. Package sync 3.1. 多线程 3.2. 竟态检查 detect race 3.3. 同步问题 3.3.1. sync.atomic 3.3.2. Mutex 3.4. errgroup 3.5. sync.pool 4. chan 4.1. channels 4.2. unbuffered channels 5. Package context 1. Goroutine 2. Memory mod原创 2021-05-13 20:34:02 · 223 阅读 · 1 评论 -
【Go进阶】02 错误处理
目录 1. 错误处理 1.1. Error VS Exception 1.2. Error Type(错误类型) 1.2.1. Sentinel Error 1.2.2. Error types 1.2.3. opaque errors 1.3. wrap 2. 日志输出 1. 错误处理 1.1. Error VS Exception Error概述 对于真正意外的情况, 那些表示不恢复的程序错误; 例如索引越界, 不可恢复的环境问题, 栈溢出, 才使用panic; 对于其他错误情况原创 2021-04-22 00:06:14 · 184 阅读 · 0 评论 -
【Go基础】04 Go标准命令 测试与性能
目录 1. 单元测试 1.1. 基本单元测试 1.2. 表组测试 2. 性能基准测试 2.1. 基准测试 学习资料 书籍: Go学习笔记–github雨痕 Go语言入门教程,Golang入门教程 1. 单元测试 Go 语言的测试工具只会认为以_test.go 结尾的文件是测试文件。 概述 基础测试(basic test)只使用一组参数和结果来测试一段代码。 表组测试(table test)也会测试一段代码,但是会使用多组参数和结果进行测试。 也可以使用一些方法来模仿(mock)原创 2021-04-20 15:49:55 · 80 阅读 · 0 评论 -
【Go基础】03 包 标准库
目录 1. 包 1.1. 工作空间 1.2. 源文件 1.3. 包结构 1.3.1. 包结构 规则 1.3.2. 区分 1.3.3. 导入包 2. log 学习资料 书籍: Go学习笔记–github雨痕 Go语言入门教程,Golang入门教程 1. 包 1.1. 工作空间 1.2. 源文件 1.3. 包结构 1.3.1. 包结构 规则 命名 给包及其目录命名时,应该使用简洁、清晰且全小写的名字,这有利于开发时频繁输入包名。 包名与代码所在的文件夹同名; 包中成员以名称大原创 2021-04-19 19:14:15 · 142 阅读 · 0 评论 -
【Go基础】02 Channel及并发
目录 1. 并发 1.1. Goroutine 1.1.1. cpu核心与线程 1.1.2. Goexit 终止执行 1.1.3. Gosched 1.2. Channel 1.2.1. 同步方式 1.2.2. 异步方式 1.2.3. 收发方式 1.2.3.1. 单向 1.2.3.2. 选择 1.3. 多线程 1.3.1. 协程 & 例程 1.3.2. 异步与协程 2. 包 2.1. 工作空间 2.2. 源文件 2.3. 包结构 2.3.1. 导入包原创 2021-03-16 20:11:37 · 176 阅读 · 0 评论 -
【Go基础】01 基本语法
目录 1. 类型 1.1. 指针类型 1.1.1. 转换 1.2. 自定义类型 2. 表达式 2.1. 关键字/保留字 2.2. 运算符 2.3. 控制流 2.3.1. range 2.4. 闭包 3. 函数 4. 数据 4.1. array 4.2. 切片类型 slice 4.2.1. reslice 4.2.2. append 4.2.3. copy 4.3. Map 4.3.1. 注意 4.4. struct 学习资料 书籍: Go学习笔记–gith原创 2021-03-11 18:56:16 · 255 阅读 · 0 评论 -
【GO】入门踩坑记录
目录 1. 编译器 2. PROXY代理 设置 2.1. 设置proxy源 2.2. 处理冲突 3. go工程 3.1. 目录结构 3.2. 处理 github库 依赖 4. 编译 4.1. linux 目标文件 1. 编译器 goland –最方便, 使用30天; liteide 不错的IDE; vscode 配置稍复杂; 2. PROXY代理 设置 2.1. 设置proxy源 官方源不可用; 需要设置相应的源; goproxy.io 源 go env -原创 2020-11-21 15:46:54 · 297 阅读 · 0 评论