README ¶ Golang开发手记 用Go语言做开发,在这个Repository里整理一些常用的案例,计划慢慢积累作为以后开发的CookBook。 仓库里所有知识点对应的代码示例都可正常运行,拿来直接应用到生产项目上也不会有问题。因为目的是积累Go语言开发的案头书,所以并不会讲源码分析之类的东西,如果想更多了解 Go 语言各种内部原理和源代码解读欢迎关注我的公众号 「网管叨bi叨」 ,那里除了应用还会用大量的原理分析。 另外最近我推出了自己的Go实战专栏课程,专栏配套一个专属的私有项目,通过tag版本追踪记录每个章节代码的变更,让大家能轻松跟上学习。 专栏分为五大部分: 访问:https://xiaobot.net/p/golang 或者扫码下方海报二维码可查看课程详情 目录 前期准备 环境安装 基础语法 初始化 Go应用初始化工作的执行顺序 Go语言init函数的六个特征 项目工程 依赖管理工具GOMODULE GoModules 管理私有依赖模块 Go Modules 依赖的版本管理 常用编码规范 Go 里面怎么实现枚举 字符串 看透Go语言的字符串 操作中文字符串 常用字符串操作 string、int、int64 类型之间的相互转换 高性能地拼接字符串 数组 数组的上限推导和越界检查 Slice切片 声明和初始化 追加和删除元素 过滤重复元素 排序结构体切片 切片并非引用类型 使用切片时要注意的几个坑 实用的切片工具函数 Map (通识概念)哈希表的设计原理 声明和初始化 不要向nil map写入键值 修改map 遍历map make 和 new Go 函数的 Map 型参数,会发生扩容后指向不同底层内存的事儿吗? 结构体 巧用匿名结构体 读写数据 编码JSON 解码JSON 如何控制Go编码JSON数据时的行为 逐行读取文件 Go语言IO库使用方法汇总 (进行IO操作时到底应该用哪个库) 字节序:大端序和小端序 用Golang读写HTTP请求(附Options设计模式实现) 目录和文件操作 Go语言文件操作大全 加餐版--实用的目录和文件操作 指针 用法和使用限制 uintptr 和 unsafer.Pointer 扩展阅读:内存对齐 接口 认识Go的接口 Go接口的类型和方法的接收者 接口的类型转换和断言 接口调用时的动态派发 Range 迭代 函数 调用惯例和参数传递 defer的用法和行为分析 panic和recover 错误处理 关于Golang错误处理的一些建议 Go代码更优雅地错误处理 Go 1.13后的包装错误和相关接口 包 内部包 标准库 正则表达式 Time 常用基础操作 Time 的时区和时间计算操作汇总 数据库访问 使用标准库 database/sql 访问数据库 使用ORM库 gorm 访问数据库 GORM 入门指南 GORM CRUD指南 系统编程 命令行flag 监听系统信号 并发编程 Context上下文 Context 使用示例 图解 Context 原理 Context 源码学习 Channel 基本概念和用法 互斥锁的典型用法和常见误区 用WaitGroup进行协同等待 ErrorGroup 兼顾协同等待和错误传递 Reset计时器的正确姿势 结合cancelCtx, Timer, Goroutine, Channel的一个例子 使用WaitGroup, Channel和Context打造一个并发用户标签查询器 使用sync.Cond实现一个有限容量的队列 使用信号量控制有限资源的并发访问 使用Chan扩展互斥锁的功能 用SingleFlight合并重复请求 CyclicBarrier 循环栅栏 原子操作的用法详解 反射 Go反射的使用教程 反射最常见的应用--结构体标签 线上问题解决实录 重定向运行时panic到日志文件 用Go的交叉编译和条件编译让自己的软件包运行在多平台上 在容器里怎么设置GOMAXPRCS 预防并发搞垮友军的几个方法 编译原理 Go程序的编译原理 一些有意思的小程序 一个简单的概率抽奖工具 限流算法之计数器 限流算法之滑动窗口 限流算法之漏桶 限流算法之令牌桶 并发趣题--H2O制造工厂 可以自解释的Token生成算法 生成分布式链路追踪traceid和spanid的算法 一个带阻塞限流器的HTTP客户端 AES加解密,HMAC验签 密码复杂度验证 gRPC应用实践 interceptor拦截器--gRPC的Middleware Go服务治理 让Go进程监控自己的资源使用情况 Go服务进行自动采样性能分析的方案设计思路 从Go log库到Zap,怎么打造出好用又实用的Logger 分布式服务的日志该怎么串联起来 Go 单元测试通关指南 go test 工具集和表格测试 模拟网络请求和接口调用 原生数据库查询的 Mock 测试 数据库ORM的Mock测试 Mock接口实现和对接口打桩 全能打桩工具Go Monkey的使用介绍 如何写出可测试的代码 用单元测试发现协程泄露隐患 Go 1.18 模糊测试使用教程 Expand ▾ Collapse ▴ Directories ¶ Show internal Expand all Path Synopsis codes aes-go-java-convertor/aes-go ali_tts_oss/tts atomic byte_order context_demo copy_properties ctx-usage-demo cyclic_barrier errorgroup flag_library/boolean flag_library/head_command flag_library/subcommand gen_token holmes_notes http_client_with_rate httptool img json/encoder latency-codes/req-body-not-close learntime mask_util order_util password password_complexity practices/crosscompile prevent_over_concurrency random_util reqeust_sign_generate singleflight slice slice_util synccond tag_picker trace_span Click to show internal directories. Click to hide internal directories.