Go教程技术文章
-
io.Reader 一次 Read 不保证填满缓冲区。本文用固定 8 字节头和变长负载示例,讲清 io.ReadFull 的补齐语义、EOF 与 ErrUnexpectedEOF 的区别、长度上限和网络读超时。295 收藏 -
Go 的 map 与 maps.Keys 都不保证遍历顺序。本文给出 slices.Sorted(maps.Keys(m)) 的最小写法,说明默认升序、自定义比较器、稳定输出键值对、空 map、并发与性能边界。294 收藏 -
Go SSE 推送的关键不是循环 Write,而是用 ResponseController.Flush 提交事件,用 ticker 心跳维持空闲连接,并通过 Request.Context 感知客户端断开后停止生产。294 收藏 -
用 Go embed.FS 把 SQL 迁移文件编译进二进制,按版本稳定排序,并通过 schema_migrations 与事务安全执行。293 收藏 -
Participle 的错误对象已经携带 lexer.Position,可以用 errors.As 提取 ParseError,输出文件名、行号、列号和 Message,并正确区分普通错误。293 收藏 -
Go 1.23 引入 filepath.Localize,用于把 io/fs 的斜线路径安全转换为当前操作系统路径。本文比较 Localize、ValidPath 与 FromSlash 的边界,给出输入校验、跨平台错误处理和 API 选型示例。292 收藏 -
Golang · Go教程 | 1星期前 | 标准库 · JSON · go语言 · 后端开发 · Go JSON反序列化 encoding/json/v2 MatchCaseInsensitiveNames 字段名匹配
Go encoding/json/v2 默认按大小写精确匹配字段名;本文用 MatchCaseInsensitiveNames、case:ignore、case:strict 与分隔符兼容选项,讲清调用级统一策略、字段级例外、歧义与重复名风险,并给出迁移测试清单。292 收藏 -
runtime/secret.Do 通过编译器与运行时协作,减少机密数据在寄存器、栈和堆上的残留,但它不把普通优化结果变成语言规范保证。本文梳理两者的职责边界、返回值设计和兼容限制。292 收藏 -
Go 标准库 flag 的 String 适合单值参数,但命令行工具经常需要重复传入 -include。本文比较单值、逗号分隔、flag.Func 和自定义 flag.Value 四种方案,给出可直接复用的切片收集实现,并说明默认值、空值和 FlagSet 隔离场景。292 收藏 -
Go modules 用主模块 replace 将依赖源码映射到本地模块根目录,保留原 import 与 require。通过原创联调示例说明版本范围、工作区影响、CI 路径风险和撤销替换的方法。292 收藏 -
QueryUnescape 遇到不完整或非十六进制的百分号转义时会返回 EscapeError。本文说明如何保留原始值、定位坏片段、理解加号语义,并处理 ParseQuery 的部分成功结果。292 收藏 -
Go 的 net.Listener 接口没有 File 方法。本文说明怎样断言到 TCPListener 或 UnixListener,使用 File 导出 os.File 副本,并区分 SyscallConn、资源所有权和平台边界。292 收藏 -
Go 的 csv.Reader 默认会用第一条记录的字段数约束后续行,遇到缺列或多列就返回 ErrFieldCount。本文从故障现场、根因和修复动作出发,说明如何允许不定列数,并把缺列、额外列和真正的 CSV 格式错误分开处理。291 收藏 -
讲清 Go fs.WalkDir 跳过指定子目录的正确写法:仅在目录节点返回 fs.SkipDir,并区分按名称与按相对路径排除,同时处理错误、根目录和非目录边界。290 收藏 -
sql.Named 会创建不带符号前缀的 NamedArg,database/sql 再将名称、序号和值交给数据库驱动。命名占位符是否可用、查询中的符号写法以及值转换规则都由具体驱动决定。290 收藏