Go教程技术文章
-
Go encoding/json 解码 PATCH 或可选配置时,普通字段无法区分缺失和显式 null。本文从 RawMessage 到泛型 Nullable,说明如何识别字段状态、处理空输入并保留类型错误。203 收藏 -
讲清 Go html/template.JSEscapeString 的字符串级 JavaScript 转义边界,用最小示例对比 HTML、JavaScript 与 URL 语境,并说明何时应交给 html/template 自动处理,避免重复转义和不安全的可信类型。202 收藏 -
Go unique.Make 只接受 comparable 类型并返回 Handle,不会替业务规则返回 error。本文用空字符串、nil 指针和不可比较类型说明处理边界,再给出先校验、后规范化、按需保留句柄的工作流。202 收藏 -
解释 Go Readdirnames 正数分批读取中的 io.EOF,展示先消费名称再判断错误的完整代码,并区分非正数读取、业务错误与目录句柄关闭。202 收藏 -
Go 的 png.DecodeConfig 可以先读取 PNG 的颜色模型和宽高,再决定是否创建完整图像。本文说明尺寸准入、Reader 位置重置、内存 Reader 重放和两阶段错误处理。202 收藏 -
Go bytes.TrimSpace 会按 Unicode 空白规则去掉字节切片首尾的空白,并保留中间内容。本文说明最小写法、空结果、返回子切片的共享存储边界,以及与 bytes.Trim 等函数的选择。201 收藏 -
用 Go net.Resolver.LookupSRV 查询服务记录,拆解 Target、Port、Priority、Weight 的职责,并给出带超时、可直接交给 DialContext 的地址转换写法。201 收藏 -
Go os.Args 判断缺少命令参数时,应先检查 len(os.Args) 是否小于所需参数数量,再访问对应下标。本文说明程序名与位置参数的关系,区分缺少参数和空字符串,并介绍何时交给 flag 解析选项。200 收藏 -
os.Root.WriteFile 适合直接写入并允许覆盖;如果业务要求目标已存在就失败,应改用 Root.OpenFile 加 O_CREATE|O_EXCL,再用 errors.Is 判断 os.ErrExist。本文还说明 Root 相对路径、父目录、权限位和 Close 错误的处理边界。200 收藏 -
Go 的 archive/zip 提供 OpenReader 和 NewReader 两种读取入口。本文从逐项遍历 ZIP 条目开始,说明怎样区分目录、打开文件内容、限制读取范围并处理关闭和读取错误,最后封装一个可复用的读取函数。200 收藏 -
在 Go 中反复把字节编码为十六进制文本时,可以用 hex.EncodedLen 计算容量,再用 hex.Encode 或 hex.AppendEncode 复用目标缓冲区。本文说明 len、cap、dst[:0] 和多段追加的正确关系。198 收藏 -
解释 fs.Sub 的目录根约定与延迟访问错误,用内存文件系统示例区分路径合法性、目录属性和子树映射,并给出父目录读取与显式目录检查写法。198 收藏 -
Go reflect.Value.CanFloat 用来判断反射值能否安全调用 Float。本文区分 float32、float64、整数和无效 Value,给出带错误返回的读取函数,并说明 Float 返回 float64 时的边界与反射性能取舍。198 收藏 -
区分Go pprof中的CPU样本、采集窗口与业务墙钟时间,通过原创采集示例理解flat、cum和百分比分母,说明等待与并行如何影响读数,以及何时补充trace或业务计时。197 收藏 -
比较Go database/sql结果集的自动关闭、defer和显式关闭,区分QueryContext、Scan、Err、Close的错误入口,用完整读取函数处理早退、迭代失败和关闭错误。195 收藏