后端开发
-
Go资深工程师讲解(慕课) 001
概览 下载开发: vi emacs idea eclipse vs sublimeIde: GoLand,liteIDE默认 gopath ~/go/src 基本语法 变量定义使用 var,函数外定义可以使用括号的方式 package main import "fmt" //函数外定义要使用var var aa=3 var ss=&quo…
-
Go工程师体系课 protoc-gen-validate
protoc-gen-validate 简介与使用指南 ✅ 什么是 protoc-gen-validate protoc-gen-validate(简称 PGV)是一个 Protocol Buffers 插件,用于在生成的 Go 代码中添加结构体字段的验证逻辑。 它通过在 .proto 文件中添加 validate 规则,自动为每个字段生成验证代码,避免你手…
-
编程基础 0010_Go底层原理与源码精华
Go 底层原理与源码精华 基于《Go 源码剖析》(雨痕, 第五版下册)、《Go 1.4 runtime》、《Go 学习笔记 第四版》、《Golang 性能优化》、《Go Execution Modes》等资料整理,并补充现代 Go 版本的变化。 一、Go 编译器与链接器 1.1 编译流程概览 Go 的编译过程分为以下阶段: 源码 (.go) --> 词…
-
Go工程师体系课 protobuf_guide
Protocol Buffers 入门指南 1. 简介 Protocol Buffers(简称 protobuf)是 Google 开发的一种语言无关、平台无关、可扩展的结构化数据序列化机制。与 JSON、XML 等序列化方式相比,protobuf 更小、更快、更简单。 项目主页:https://github.com/protocolbuffers/prot…
-
Go资深工程师讲解(慕课) 003
003 测试 吐槽别人家的,go语言采用表格驱动测试 测试数据和测试逻辑混在一些 出错信息不明确 一旦一个数据出错测试全部结束 表格驱动测试 test:=[]struct{ a,b,c int32 }{ {1,2,3}, {0,2,0}, {0,0,0}, {0,0,0}, {-1,1,0}, {math.MaxInt32,1,math.MinInt32},…
-
编程基础 0009_testing详解
Go testing 详解 目录 testing 包基础 表格驱动测试 子测试 t.Run 基准测试 Benchmark 测试覆盖率 TestMain httptest 包 Mock 和接口测试技巧 模糊测试 Fuzz 1. testing 包基础 1.1 测试文件和函数命名规则 Go 测试遵循严格的命名约定: 测试文件以 _test.go 结尾(如 use…
-
编程基础 0008_标准库进阶
Go 标准库进阶 系统整理 Go 标准库中最常用的包,重点覆盖 io、os、bufio、strings、time、fmt 等 1. io 包核心接口 Go 的 I/O 设计围绕几个核心接口展开,几乎所有 I/O 操作都基于它们。 // 最基础的两个接口 type Reader interface { Read(p []byte) (n int, err er…
-
编程基础 0007_并发模式
Go 并发模式 常见的 Go 并发设计模式,每个模式都有完整可运行示例和适用场景说明 1. Worker Pool 模式 固定数量的 worker goroutine 从共享的任务队列中取任务执行,控制并发度。 package main import ( "fmt" "sync" "time" ) …
-
编程基础 0006_并发进阶_sync包与Context
并发进阶:sync 包与 Context 一、sync 包详解 1. sync.Mutex 与 sync.RWMutex // Mutex: 互斥锁,同一时间只有一个 goroutine 能持有 var mu sync.Mutex var count int func increment() { mu.Lock() defer mu.Unlock() cou…
-
编程基础 0005_错误处理进阶
Go 错误处理进阶 目录 Go 错误处理哲学 error 接口本质 自定义错误类型 fmt.Errorf 与 %w 包装错误 errors.Is 和 errors.As 哨兵错误模式 错误处理最佳实践 实际项目中的错误处理模式 1. Go 错误处理哲学 1.1 与 try-catch 的根本区别 在 Java、Python、C++ 等语言中,异常处理依赖 t…