Go问答技术文章
-
本文解释 Go 原子类型为何禁止首次使用后复制,演示副本如何变成独立内存位置,并给出指针所有权、API 设计和 go vet 排查方法。217 收藏 -
从平台、路径、工具链、构建标签、共同依赖和符号查找六个边界排查 Go plugin 加载失败,给出可复现的 Open/Lookup 错误判断方法。216 收藏 -
Go base64.DecodeString 返回 CorruptInputError 时,错误值就是需要排查的零基字节偏移。本文用 errors.As 提取位置,结合上下文、字母表、补位、UTF-8 和 Strict 模式,区分非法字符与输入截断。216 收藏 -
multipart.ReadForm 会把超出内存预算的文件部分落到临时目录,Form.RemoveAll 用于删除这些临时文件。本文区分 net/http Server 自动清理与独立解析时必须手动清理的边界。216 收藏 -
Go 类型断言报错时,先确认接口中的动态类型,再用双返回值和 %T 定位原因,并区分 nil 接口与 typed nil,避免用 panic 掩盖输入协议问题。215 收藏 -
用 Go database/sql 设计业务事务时,把 BeginTx、Commit 和 Rollback 放在用例外层,让仓储函数只接收 Tx 并返回错误,避免事务职责分散。215 收藏 -
Go 流式响应发送 Trailer 时,已知字段名必须在首次 WriteHeader、Write 或 Flush 前通过 Trailer 响应头声明;正文写完后再设置最终值。本文用一个 NDJSON 小项目讲清服务端顺序、客户端 EOF 读取、TrailerPrefix 边界和自动化验收。215 收藏 -
Go 的 database/sql 中,事务回滚并不等于所有相关资源都已正确收口。本文从 Tx、Rows、Stmt 和连接池指标四个层面定位连接仍被占用的常见原因。215 收藏 -
Go tls.Config可以并发复用,但传给TLS函数后不得继续修改。本文说明只读快照、Clone浅复制、可变切片隔离和证书配置热切换的安全组织方式。214 收藏 -
os.DirFS 接收的是 io/fs 逻辑路径,不是任意操作系统路径,因此会拒绝 ..、绝对路径和空路径段。但这只阻止调用参数直接上跳,不能防住目录内符号链接逃逸,也不能消除相对根目录受 Chdir 影响的问题。本文说明校验方法与 os.Root.FS 的适用边界。214 收藏 -
Golang · Go问答 | 2天前 | goroutine · pprof · Go问答 · goroutineleak Go pprof goroutine 泄漏剖析 waiting 状态 goroutine profile
waiting 数量多本身不能证明泄漏。本文区分普通 goroutine profile 与 Go 1.27 goroutineleak profile,并用趋势、可达性和资源影响建立可执行的判断方法。213 收藏 -
Go 的 http.Request.GetBody 不是所有请求都会自动生成,只有客户端 NewRequest 识别的标准 reader 才会填充。本文区分客户端与服务端边界,并给出自定义 Body 的安全重放写法。212 收藏 -
Go Scanner 默认只能缓冲有限大小的 token,遇到超长日志会返回 token too long。本文说明如何在 Scan 前正确设置 Scanner.Buffer,以及何时改用 bufio.Reader 分片读取。212 收藏 -
Go interface 存入零值结构体后为什么仍不等于 nil?关键在接口值同时携带动态类型和动态值。本文对比零值结构体、nil 指针和 nil interface,给出类型断言与反射判断的安全边界。212 收藏 -
Go pprof 的 alloc_space 看累计分配,inuse_space 看最近一次 GC 后仍存活的内存。同一调用栈排名相反并不矛盾,关键是先确认对象生命周期,再用两个视图交叉判断。211 收藏