Go语言技术文章
-
用 Go netip.ParseAddr 与 Addr.IsPrivate 识别 RFC 1918、RFC 4193 私有地址,处理 IPv4 映射边界,并区分地址分类与安全授权。116 收藏 -
go doc -ex 会把包或符号关联的可执行示例纳入文档输出,适合快速查看示例源码;它不负责运行示例。本文说明 -ex 与默认查询、-src、-cmd 以及 go test 的边界。116 收藏 -
Go 1.23 起可以用 maps.Keys 获取 map 的键迭代器,再用 range 或 slices.Collect 收集成切片;如果输出必须稳定,还要显式排序,因为 map 键的迭代顺序没有保证。116 收藏 -
Go 升级后 gofmt 可能因为格式规则或实现调整产生少量空白差异。本文用变化文件数、diff 行数和工具链版本定位原因,再通过 go.mod、toolchain 与 CI 固定格式化环境。116 收藏 -
Go text/template 读取多层 map 时,可以用内置 index 函数把多个键按层传入;本文说明点号取键与 index 的区别、动态键写法,以及 missingkey=error 如何让缺失字段及时返回 Execute 错误。116 收藏 -
Go 里的 runtime.NumCPU 与 GOMAXPROCS 都和 CPU 有关,但一个描述可用逻辑 CPU,另一个限制同时执行 Go 代码的并行上限。本文用代码、容器边界和反例拆开两者的职责。116 收藏 -
Go 解析错误位置有两条处理路径:scanner.ErrorList 直接提供文件、行、列和消息,AST 节点的 token.Pos 则必须交给同一个 token.FileSet 映射。本文说明 Position、PositionFor 以及 //line 指令下的坐标边界。116 收藏 -
Go 中 filepath 面向当前操作系统的本地文件路径,path 面向固定使用斜杠的 URL 路径。本文用同一组输入对比两者的职责、Windows 盘符风险、资源地址拼接和跨平台落地方式。115 收藏 -
Go compress/flate 可用预置字典复用独立短记录的公共前缀。本文给出配套压缩与解压示例,说明字典版本、错误处理及压缩收益的判断边界。115 收藏 -
Go template 的 missingkey=error 只在执行阶段读取缺失 map 键时生效。本文从 Parse、Option、Execute 和 ExecuteTemplate 的关系排查为什么没有报错,并给出接住执行错误的修复写法。115 收藏 -
Go 的 httptest.ResponseRecorder 可以在不监听真实端口的情况下记录 handler 响应。本文从请求构造、结果读取到状态码、响应头和 JSON Body 断言,整理一套可直接放进 go test 的写法,并说明它与 NewServer 的边界。115 收藏 -
errors.Is 匹配不到自定义包装错误,通常不是错误消息不一致,而是包装类型没有通过 Unwrap 暴露内部原因,或创建包装时使用了 %v。本文用错误树、单错误 Unwrap、多错误 Unwrap 和自定义 Is 方法梳理排查与设计边界。115 收藏 -
Go 的 len(string) 统计的是 UTF-8 字节数,不等于中文字符数量。本文用 utf8.RuneCountInString 统计 rune 数量,并说明非法编码、emoji 组合序列和显示字符之间的边界。115 收藏 -
Squirrel 的 Expr 可以把 SQL 片段与绑定参数封装成可组合的 Sqlizer。本文从普通参数、嵌套表达式、ToSql 和 PlaceholderFormat 四个角度说明怎样保持 SQL 与 args 的顺序一致,并避开字符串拼接和问号转义误区。115 收藏 -
用 Go 的 go-shp 包按记录读取 Shapefile 几何与 DBF 属性,解释 Next、Shape、Fields、ReadAttribute 和 Err 的配合方式。115 收藏