Go语言技术文章
-
Go 的 encoding/csv 会按引号状态判断记录边界。本文用多行字段示例说明怎样保留引号内换行,并给出字段数检查、脏数据容错和大文件逐条读取的取舍。135 收藏 -
Go 1.21 引入的 clear 内置函数适合批量清空 map,但它并不等于释放底层容量。本文用缓存复用、重新分配和基准测试说明三种清理策略的边界。134 收藏 -
sort.Find 返回有序切片中满足比较条件的位置和命中状态,但 index 仍可能是插入点。本文用重复值、空切片和边界值示例说明 less 函数如何设计,以及如何区分找到元素和得到插入位置。134 收藏 -
bufio.Reader.Peek 适合查看缓冲区内的短前缀,不适合把整条未知长度消息一次性探出来。本文用 ErrBufferFull 解释边界,并给出切换 ReadBytes、ReadString 或按分隔符流式消费的判断方法。134 收藏 -
Go regexp.FindAllStringSubmatchIndex 返回的是按捕获组编号排列的字节下标对。本文用一个键值文本解析场景说明如何映射整体匹配、命名捕获组、未匹配分支和 UTF-8 边界。134 收藏 -
Go 上传接口要限制请求体,应该在 Handler 入口用 http.MaxBytesReader 包住 r.Body,再用 errors.As 识别 *http.MaxBytesError 并返回 413。本文还区分 Content-Length 预检查与 multipart 的 maxMemory。134 收藏 -
Go 的接口类型可以参与比较,但接口里装入 slice、map 或 func 等不可比较动态值时,直接比较可能触发 panic。本文用 reflect.Type.Comparable 判断动态类型的类型级条件,再处理 nil、动态类型不同和 NaN 等边界,最后比较反射、泛型约束与业务键设计的适用场景。134 收藏 -
围绕 Go net TCP 监听地址,说明通配地址、具体网卡 IP、tcp4/tcp6 与双栈边界,并给出启动异常的排查清单。134 收藏 -
TestMain 适合管理每个包只启动一次的昂贵资源,但不应承载单个用例的可变数据。本文用共享 httptest 服务演示包级生命周期、不可变入口、用例命名空间、t.Cleanup 与退出码处理,让并行测试共享资源而不互相污染。134 收藏 -
Go 的 json.Decoder 可以从 io.Reader 连续读取多个顶层 JSON 值。本文区分单对象、空白分隔对象流和 JSON 数组,给出 EOF 边界、错误处理与可复用读取函数的设计方式。134 收藏 -
Gin 的 ShouldBind 会消耗请求体,第二次绑定常常只能拿到空内容。本文用 ShouldBindBodyWith 缓存同一份 body,演示两个结构体的绑定写法、错误处理和性能边界。134 收藏 -
Go 项目出现 vendor inconsistent 时,通常是 go.mod、vendor/modules.txt 或 go.work 与 vendor 目录不同步。本文按单模块和 workspace 两种情况给出恢复命令,并解释 replace、显式依赖和 -mod 选择。134 收藏 -
Go runes.Remove 可按字符集合删除命中的 Unicode 码点。本文用 Predicate 删除下划线和中点,说明 UTF-8 输入、字符串返回值、原文留存与展示副本的使用边界。134 收藏 -
使用 golang.org/x/text/encoding/japanese 的 ISO2022JP 解码器读取带转义状态的日文字节流,覆盖一次性转换、流式读取、截断边界与重新编码。134 收藏 -
Go fmt.Errorf 多个 %w 可保留多个错误原因。结合处理与清理失败场景说明 nil 组合、错误树、errors.Unwrap 的限制,以及分类与兼容性取舍。134 收藏