-
Go 解析 JSON 请求时,默认宽松解码、Decoder 严格校验和 RawMessage 扩展区分别适合什么场景?本文用原创示例说明未知字段、必填校验与接口演进的取舍。
-
Go 的 json.Decoder 可以从 io.Reader 连续读取多个顶层 JSON 值。本文区分单对象、空白分隔对象流和 JSON 数组,给出 EOF 边界、错误处理与可复用读取函数的设计方式。
-
Go大CSV可用Reader循环同步处理,避免全量保存。本文给出三字段统计示例,说明字段检查、ReuseRecord所有权、超大记录与下游积压如何影响内存上界。
-
使用 Go 的 debug/elf 打开 ELF 文件后,可以调用 File.ImportedLibraries 读取动态链接阶段需要的库名。本文给出完整的错误处理、资源关闭和空结果判断方式,避免把动态依赖、导入符号和运行时实际加载结果混为一谈。
-
Go crypto/tls 用 CurveID 表示密钥交换组,CurvePreferences 决定显式支持范围。本文说明传统组、X25519 与混合后量子组的配置边界,并给出握手结果检查清单。
-
Go 的 image.Image 不要求调用方先知道图片一定是 Gray 还是 RGBA。本文从 ColorModel 与 At 出发,说明怎样统一读取像素、处理预乘 alpha,并在确实需要时转换成稳定的 Gray、RGBA 或 NRGBA 类型。
-
Go 的 net/http/pprof 默认注册到 DefaultServeMux;业务服务使用自定义 ServeMux 时,需要显式把 Index、Handler、Profile、Symbol 和 Trace 注册到诊断 mux,再交给独立 HTTP Server。
-
Go embed FS 资源加载失败时,保留逻辑资源名、失败阶段与底层错误链。小项目区分非法路径、资源不存在和模板解析错误,说明 ValidPath 不保证存在。
-
Go expvar.Map 可以把按接口、缓存或队列维度拆分的统计值组织成一个指标映射,再用 Publish 注册到 expvar 全局变量表。本文说明 Add、Set、Get、Delete 与 Publish 的职责边界,以及并发更新和键名设计要点。
-
Go text/template 使用自定义函数时,应先通过 Funcs 注册 FuncMap,再调用 ParseFS 解析引用这些函数的模板。本文结合 embed.FS 说明调用顺序、函数签名、解析错误与执行错误的区别。
-
Go XML Decoder 关闭 Strict 可容忍部分缺失标签与实体错误。通过小样本 Token 对照说明容错边界,区分解析成功、字符映射、HTML 兼容和业务数据正确性。
-
Go 在 Linux 子进程结束后,通过 Wait、ProcessState 和 Rusage 读取 CPU 时间与峰值 RSS。示例保留失败任务统计,区分墙钟耗时、实时内存和累计子进程口径。
-
Go 的 os/user.Current 用于获取当前进程用户,首次调用后会缓存结果;os/user.Lookup 用于按用户名查询,并在找不到用户时返回 UnknownUserError。本文结合 cgo、osusergo 和跨平台字段差异说明怎样选择。
-
Go 服务端拿到 UnixConn 后,怎样读取连接对端的 pid、uid、gid?本文从 socket 文件权限和连接凭据的区别讲起,给出 Linux 下通过 SyscallConn、RawConn.Control 与 SO_PEERCRED 获取 Ucred 的写法,并说明如何隔离 BSD/macOS 等平台差异。
-
Go 使用 unixgram 接收本地数据报时,每次读取对应一个独立报文,但缓冲区太小会让消息内容被截断。本文用 ReadFromUnix 和 ReadMsgUnix 说明怎样保留边界、识别风险并选择合适的读取方式。