Go语言技术文章
-
Go SQLX MapScan 适合读取列名不固定的查询结果。本文给出 Queryx、MapScan、Rows.Close 和 Rows.Err 的配合写法,并说明重复列名、NULL 值以及与 StructScan、SliceScan 的取舍。455 收藏 -
区分go-smtp服务端扩展声明、本地API与会话条件,解释Extension、SupportsAuth、TLS和SIZE判断,并给出不认证不投递的能力快照示例。455 收藏 -
Go encoding/hex.Dumper 可以把写入的字节流转换成 hexdump -C 风格的十六进制转储。本文从日志排查场景出发,说明如何接入 io.Writer、为什么必须处理 Close,以及如何区分写入失败和转储收尾边界。455 收藏 -
Go 的 OnProxyConnectResponse 回调发生在 Transport 检查 200 OK 之前。本文用代理主机、目标主机、状态码和错误返回说明如何诊断 CONNECT,并区分代理响应、TLS 握手与最终请求失败。455 收藏 -
Go net/url.URL 修改路径时,直接重建整条 URL 容易丢掉查询参数和片段。本文区分 Path、RawPath 与 RawQuery,说明怎样用 Path、JoinPath 以及 Query 安全更新路径和参数。455 收藏 -
解释 Go tls.Config.Clone 的浅克隆边界:顶层字段重新赋值不会回写原配置,但切片、映射和会话票据相关状态可能共享,并给出安全派生配置的写法。455 收藏 -
Go elf.ImportedSymbols 明确排除弱符号。本文用 DynamicSymbols、ST_BIND 与 SHN_UNDEF 提取未定义弱符号,并解释索引、错误和静态元数据边界。455 收藏 -
本文用 Go parser.ParseFile 构造 AST,再通过 ast.PreorderStack 在访问 CallExpr 时读取父节点栈,识别所属函数,并说明返回 false 跳过子树、空栈和 Go 版本兼容边界。455 收藏 -
sql.TxOptions 的 Isolation 影响的是并发事务如何读取和处理数据,单次查询通常看不出变化。本文用 database/sql 的最小示例说明 BeginTx 的正确写法、两个事务的观察方式、驱动支持边界和迁移回归清单。455 收藏 -
Go 标准 flag.FlagSet.Parse 会在第一个非 flag 参数处停止扫描,因此位置参数后的选项会保留在 Args 中。本文用最小示例拆开选项值、位置参数、-- 终止符和排障顺序,帮助定位选项为何仍是默认值。455 收藏 -
Go 的 os.Rename 在跨文件系统移动时可能失败。本文说明如何识别底层错误,并用临时文件、io.Copy、Sync 和删除源文件完成可控的跨挂载点移动。455 收藏 -
用 embed.FS 把模板编译进程序,再按需用 fs.Glob 检查匹配清单,最后交给 html/template.ParseFS 解析。本文对比显式 Glob 检查与直接 ParseFS 的适用场景,并梳理空匹配、坏模式、隐藏文件、模板定义名和运行时热更新边界。455 收藏 -
Go io.TeeReader 可以在主流程单遍读取时,把同一批字节同步写给记录器或摘要计算器。本文解释无内部缓冲、写入错误转读错误和内存边界,并给出选择清单。454 收藏 -
Go 代码中的调试提示、进度信息或可选输出不一定都值得写入测试日志。把输出目标抽象为 io.Writer 后,测试可以注入 io.Discard 让输出静默,也可以换成 bytes.Buffer 做精确断言;本文说明两种方式的边界和错误处理。454 收藏 -
Go gzip.Reader 用 Reset 串行复用,但 Close 不会关闭底层文件,也不能代替读到 EOF;示例区分超限拒绝、尾部校验与逐文件清理。454 收藏