Go问答技术文章
-
整理 Go encoding/json v1、encoding/json/v2 对 JSON 重复字段的默认处理差异,说明严格拒绝、旧接口兼容和 DisallowUnknownFields 的边界。499 收藏 -
Go bufio.Scanner 默认按行返回文本,空行会返回空字符串。本文用一个可复用的段落聚合流程处理普通行、连续空行、EOF 和读取错误,并说明严格空行与空白行的区别。392 收藏 -
为 Go 接口时间建立独立 JSON 适配类型,给出 UTC 整秒字符串的双向编码完整示例,明确 null、空字符串、精度检查和错误处理,并说明字段缺失与方法递归的常见问题。348 收藏 -
Go JSON 解码到 interface{} 时数字默认会变成 float64。本文比较明确目标类型、UseNumber 和展示型字符串三种选择,帮助你避免大整数精度丢失。477 收藏 -
Go map 的遍历顺序没有语言保证。本文用键收集、sort.Strings 和多字段比较器,把 map 数据转换成可复现的日志、接口和报表结果。311 收藏 -
Go 使用 encoding/json 时字段为空,通常要按导出字段、struct tag 拼写和 Unmarshal 目标指针三个方向排查。本文用最小示例说明每种现象的原因与修复方式。206 收藏 -
通过容量与新增元素数量判断 Go append 是否复用底层数组,结合切片别名、元素地址和限容示例区分长度变化、共享写入与重新分配,并说明显式复制和函数返回值的使用边界。462 收藏 -
Go range 遍历结构体切片时,第二个变量通常是当前元素的值拷贝,修改它不会写回原切片。本文用最小示例说明原因,并给出按索引写回、只读值变量和指针切片三种选择。154 收藏 -
reflect.TypeOf 读取的是接口值的动态类型。传入真正的 nil 接口时没有动态类型,因此返回 nil;本文结合 typed nil、TypeFor 和 ValueOf 说明反射代码的安全判断方式。305 收藏 -
Go 的 image.Image 不要求调用方先知道图片一定是 Gray 还是 RGBA。本文从 ColorModel 与 At 出发,说明怎样统一读取像素、处理预乘 alpha,并在确实需要时转换成稳定的 Gray、RGBA 或 NRGBA 类型。291 收藏 -
Go 的 net/http/pprof 默认注册到 DefaultServeMux;业务服务使用自定义 ServeMux 时,需要显式把 Index、Handler、Profile、Symbol 和 Trace 注册到诊断 mux,再交给独立 HTTP Server。491 收藏 -
Go embed FS 资源加载失败时,保留逻辑资源名、失败阶段与底层错误链。小项目区分非法路径、资源不存在和模板解析错误,说明 ValidPath 不保证存在。141 收藏 -
Go expvar.Map 可以把按接口、缓存或队列维度拆分的统计值组织成一个指标映射,再用 Publish 注册到 expvar 全局变量表。本文说明 Add、Set、Get、Delete 与 Publish 的职责边界,以及并发更新和键名设计要点。385 收藏 -
Go text/template 使用自定义函数时,应先通过 Funcs 注册 FuncMap,再调用 ParseFS 解析引用这些函数的模板。本文结合 embed.FS 说明调用顺序、函数签名、解析错误与执行错误的区别。406 收藏 -
Go XML Decoder 关闭 Strict 可容忍部分缺失标签与实体错误。通过小样本 Token 对照说明容错边界,区分解析成功、字符映射、HTML 兼容和业务数据正确性。412 收藏