Go语言技术文章
-
Go 返回接口值时,typed nil 会让接口看起来非 nil。本文用接口动态类型和值的关系,说明如何修正接口返回、error 成功分支和调用方复查。413 收藏 -
讲清 Go reflect.Value.IsZero 在 nil 接口、typed nil 指针和接口容器之间的判断边界,给出先检查 IsValid 的安全写法与复查清单。413 收藏 -
Go 的 multipart.Reader 需要保留 quoted-printable 部件时,应使用 NextRawPart。本文对比 NextPart 的透明解码行为,演示安全解析 boundary、保存原始 body,以及按需显式解码的实现边界。413 收藏 -
用 Go strings.IndexByte 定位 ASCII 协议分隔符,结合字符串切片完成低分配字段解析,并说明 -1、UTF-8、空字段和大字符串保留的边界。413 收藏 -
Golang · Go教程 | 1个月前 | 单元测试 · Context · Go教程 · HTTP客户端 · Go 上下文取消 HTTP测试 testing.T.Context http.NewRequestWithContext
Go 1.24 起,testing.T.Context 能把测试生命周期直接传给 HTTP 客户端请求。本文给出最小代码、超时收紧、子测试边界,并解释它与 httptest.NewRequestWithContext 的区别。413 收藏 -
time.Now() 返回的 time.Time 可能同时含墙上时钟与单调时钟读数。本文说明序列化前为什么常用 Round(0) 清理进程私有字段,以及反序列化后如何用 Equal 正确比较时间。413 收藏 -
bbolt 的嵌套 Bucket 可以把业务域、租户和键值放进清晰的层级路径。本文用一组幂等初始化、写入读取与删除边界,说明如何在事务内隔离业务数据。413 收藏 -
Go HTTP Server 可以通过 BaseContext 为新连接提供服务级根上下文。本文说明如何创建可取消的服务上下文、接入 http.Server,并区分 BaseContext、ConnContext 与请求上下文的生命周期边界。413 收藏 -
Go 项目已有 vendor 目录却没有使用时,先检查主模块根目录、go.mod 的 go 版本、GOFLAGS 或 -mod 覆盖项,再用 go mod vendor 同步 vendor/modules.txt,并用 -mod=vendor 确认构建路径。413 收藏 -
用 Go slices.Chunk 按固定大小遍历任务批次,说明最后一批、空输入、非法批大小、共享底层数组与 slices.Clone 副本边界。413 收藏 -
Go 的 http.Client 会根据重定向目标判断是否转发 Authorization。本文从第一跳与下一跳的请求头基线入手,解释敏感头为何跨域丢失,并给出用 CheckRedirect 限制信任边界的安全写法。413 收藏 -
Go math/big.Int.CmpAbs 专门比较两个大整数的绝对值,适合处理负数参与的幅度、阈值和排序判断。本文对比 Cmp 的有符号语义,说明返回值、零值、指针和迁移边界。413 收藏 -
使用 go/parser 分析 Go 源码时,ParseComments 决定 AST 是否保留注释。本文从 ParseFile、ast.File.Comments 和声明 Doc 注释入手,给出可直接改造的解析示例。413 收藏 -
Go 1.25 将 testing/synctest 正式纳入标准库。本文用并发回调和 context 超时场景说明如何用 bubble、Wait 与虚拟时间替代真实等待,并梳理网络阻塞、死锁和版本边界。413 收藏 -
Go io.TeeReader 会把通过它读取到的字节同步写入另一个 Writer。本文用一个计数 Writer 统计流经 Reader 的字节数,并说明无内部缓冲、写入错误传播、EOF 与部分读取等边界,适合上传进度、摘要计算和流式审计场景。413 收藏