Go语言技术文章
-
Go embed.FS 默认保留嵌入目录的完整路径;用 io/fs 的 fs.Sub 可以把某个子目录包装成可复用的 fs.FS 根,让模板、静态资源和通用读取代码只处理根内相对路径。本文说明初始化、下游接入、路径边界和回滚方式。410 收藏 -
Golang · Go问答 | 4星期前 | 错误处理 · Go问答 · Go net/http ResponseController ErrNotSupported SetReadDeadline SetWriteDeadline
Go HTTP 服务端调用 ResponseController 设置读写 deadline 时,如果返回未支持错误,通常不是 deadline 参数写错,而是当前 ResponseWriter 或包装链没有暴露对应能力。本文说明如何用 errors.Is 判断 ErrNotSupported、修复 Unwrap 包装器,并为不支持连接 deadline 的场景保留安全降级方案。410 收藏 -
Go 基准测试初始化被算进 ns/op 时,先确认计时边界。本文说明 b.Loop、b.N、ResetTimer、StopTimer 和 StartTimer 的正确分工,并处理每轮必须准备输入的场景。410 收藏 -
HTTP/2 的 GOAWAY 不是普通业务错误,它表示连接不再接受新流,并用 last-stream-id 划出可能已处理的范围。本文结合 Go net/http 的请求体重放条件,给出幂等请求、非幂等请求和监控证据的有限重试策略。410 收藏 -
Golang · Go教程 | 3星期前 | go · 数据库 · database/sql · Go database/sql Go Rows.NextResultSet Go 多结果集 Go Rows.Err
围绕 database/sql.Rows.NextResultSet 讲清多结果集的切换、每个结果集的扫描顺序,以及 Rows.Err 如何区分正常结束和迭代错误。410 收藏 -
io.TeeReader 没有内部缓冲,读取过程会把数据同步写给 Writer;如果 Writer 写入失败,错误会沿 Reader 的 Read 返回。本文从接口职责、n 与 err 的判断和适用边界解释这个看似延迟的错误。410 收藏 -
Go x/text/search 不是按字节或 rune 逐个比较文本,而是结合语言规则生成可比较的排序元素。因此带重音、大小写、宽度差异,甚至展开与合并关系的文本,可能在不同原始长度下匹配。本文说明 Matcher 选项、IndexString 返回区间和 Pattern 复用边界。410 收藏 -
Go strings.CutSuffix 用一个调用同时返回去掉固定后缀后的字符串和 found 状态,适合拆分文件扩展名。本文说明匹配、未匹配、空后缀和 Go 版本边界。410 收藏 -
Go 终端表格混排中文和英文时,不能用字节数或 rune 数量代替显示列宽。本文用 go-runewidth.Truncate 按单元格宽度截断,并说明尾标记预算、StringWidth、Wrap 与 Condition 的使用边界。410 收藏 -
本文用 strings.CutSuffix 处理重复后缀,说明它为什么只删除最外层一次、怎样区分未命中和空结果,以及什么时候应该循环剥离或限制次数。410 收藏 -
Go 的 http.Client.Timeout 覆盖连接、重定向和响应体读取。响应头先到达时,Do 可能已经返回 Response,后续读取仍能拿到部分字节,直到 Body.Read 返回超时错误。410 收藏 -
用 Go io.Copy 处理上传、代理和文件转存时,先限制输入边界,再利用 ReaderFrom 的快路径,最后用可复现基准确认吞吐与内存变化。409 收藏 -
Go 1.27 为 compile、link、asm、cgo、cover、pack 等工具加入 response file(@file)参数解析。本文用一个构建参数过长的场景,说明文件格式、引号换行边界、适用工具和迁移核对点。409 收藏 -
Go modules 中 replace 写了却仍下载远程模块时,按主模块、require、替换版本和 go list -m -json 结果逐层定位真实来源。409 收藏 -
Go 的 json omitempty 不会按传统规则省略结构体值字段。本文用最小示例说明值字段、指针字段和未提供状态的区别。409 收藏