Go教程技术文章
-
Go tcell 绘制中文、全角符号或 emoji 时,不能按 rune 数量固定让列坐标加一。本文从覆盖现象出发,说明 Put 返回的显示宽度、右边界判断和宽字符占两格的绘制方式。174 收藏 -
用 Go Goldmark 的 ast.Walk 遍历 Markdown AST,提取 Heading 层级和纯文本,生成可用于目录、侧栏和锚点的结构。174 收藏 -
Golang · Go教程 | 2个月前 | golang · HTTP · 安全 · Go教程 · net/http · net/http 请求超时 MaxBytesReader Go HTTP 请求体限制 内存防护
Go HTTP 服务接收上传、Webhook 或 JSON 请求时,单靠 ReadAll 很容易被异常大请求拖高内存。本文从请求体上限、读取超时、状态码和日志字段四个边界入手,给出一套可复查的 net/http 防护实现。173 收藏 -
Go 的 time.Timer.C 没有读到事件,不等于定时器已经停止。本文用 Stop、Reset 的返回值和业务侧状态记录,拆开未触发、已停止、已到期与已消费几种情况。173 收藏 -
Go 的 netip.PrefixFrom 可以把 Addr 和前缀位数构造成 Prefix,但不会自动清除 host bits。本文说明如何检查 IPv4/IPv6 位数边界,并用 Masked 得到规范化网段。173 收藏 -
用 Action、Package、Test 和 FailedBuild 读懂 go test -json 的换行 JSON 流,区分测试事件、构建事件与包级结果。173 收藏 -
用 goquery.Map 把一组 HTML 节点按原顺序转换成强类型 Go 结构体切片,并说明 Attr 缺失、空文本、校验和批量解析时的边界处理。173 收藏 -
strings.Fields 适合按空白切分普通文本,却不能把带引号的命令参数当成一个整体。本文从文件名带空格的真实输入出发,比较 Fields、简单状态机和标准库参数解析的边界,并用表驱动测试固定转义行为。172 收藏 -
Go 1.27 的 encoding/json/v1 已由 v2 实现支撑。本文解释如何用 DefaultOptionsV1 建立兼容基线,再逐项切换字段匹配、omitempty、nil 容器和重复字段等语义,降低一次性迁移风险。172 收藏 -
filepath.WalkDir 中 fs.SkipDir 是跳过目录的控制信号,普通非 nil error 才会终止整棵目录树;文件节点返回 SkipDir 还会影响其父目录。172 收藏 -
Go 服务处理外部请求时,先把字符串和默认值归一化,再统一执行字段与跨字段校验,最后将结构化错误返回给调用方。本文用请求结构体演示这条边界如何设计。172 收藏 -
sync.Once 适合只允许成功初始化一次的场景,但初始化函数一旦返回或 panic,后续 Do 不会重试。本文用显式状态机实现并发等待、失败退避、context 取消与成功缓存,并给出方案选择边界。172 收藏 -
Go channel 消费者无法退出时,先用 goroutine profile 找阻塞栈,再用 Context 补取消分支,并按 channel 所有权选择关闭责任。171 收藏 -
用 Go 的 encoding/csv 逐条读取大文件,处理固定或可变列数,记录 ParseError 的真实行列信息,并说明 ReadAll、ReuseRecord 和 LazyQuotes 的取舍。171 收藏 -
Go 使用 bufio.Writer 时,Write 成功不代表底层写入完成。本文解释 Flush 为什么是最终错误边界,并给出把 Flush 错误稳定返回调用方的写法。171 收藏