Go教程技术文章
-
Go 终端表格不能按字节长度补空格。本文用 go-runewidth.StringWidth 计算显示单元格,再用 FillRight 和 FillLeft 对齐中英文混合字段,并说明截断、emoji 与 EastAsianWidth 的边界。308 收藏 -
用 strings.Cut 解析裸键、空值和普通配置值,减少临时拆分切片,附 ParseOption 批处理实现与 SplitN 对照基准代码,说明统计单位、错误语义和结果存储寿命。308 收藏 -
os.ReadFile 适合一次性读取小文件,但面对超大配置会把完整内容装入 []byte。本文比较 os.ReadFile、os.Open 与 bufio.Reader 的使用边界,给出按行分块解析和可复查的内存控制方法。307 收藏 -
strings.Builder 的 Grow 只保证后续写入有足够容量,并不等于最终字符串长度。本文用一段可运行的 Go 示例拆开 Grow、Cap、String 和 copyCheck 的关系,说明什么时候该预留容量、为什么不能复制非零 Builder,以及如何验证结果。307 收藏 -
Go 处理回调地址时,Path、RawPath、EscapedPath 和 RawQuery 的语义并不相同。本文用 net/url 示例说明路径解码、查询参数、编码斜杠以及 PathEscape 与 QueryEscape 的正确边界。307 收藏 -
Go 先用 image.DecodeConfig 读取图片格式、宽高和颜色模型,再按像素预算决定是否调用 Decode,适合上传校验和内存保护。307 收藏 -
用 context.WithTimeout 和 exec.CommandContext 给外部命令设置截止时间,区分超时终止、启动失败与正常退出,并说明子进程清理边界。307 收藏 -
Go 的 sql.Conn.Raw 能在受控回调中暴露底层驱动连接。本文用 pgx CopyFrom 说明类型断言、生命周期、错误处理和连接池边界。307 收藏 -
用 Go 的 io.LimitedReader 控制流式读取上限,说明 N、n、EOF 与底层输入的关系,并给出读取固定片段和继续处理剩余数据的实用写法。307 收藏 -
Go 测试需要临时文件时,t.TempDir 可以创建测试专属目录,并在测试及其子测试结束后自动清理。本文说明目录生命周期、多次调用、并行子测试和 GOTMPDIR 的使用边界。307 收藏 -
atomic.Pointer 可以发布完整的不可变配置快照,但不会保护指针指向的 map 或字段。本文用独立副本、Store 和单次 Load 的完整示例,解释初始化、同版读取、多写者更新丢失及性能比较的边界。307 收藏 -
讲清 Go archive/zip 的 File.DataOffset 如何定位 ZIP 条目数据起点,并用 CompressedSize64 计算安全物理范围,区分 Open、OpenRaw 与偏移读取的使用边界。307 收藏 -
Go TLS 客户端要信任自定义 CA,通常应从系统根证书池开始,再用 AppendCertsFromPEM 追加 PEM,最后把证书池放进 tls.Config.RootCAs。本文给出 HTTP 客户端写法,并说明证书链、主机名和 InsecureSkipVerify 的边界。307 收藏 -
用 Go x/text/secure/bidirule.ValidString 检查字符串是否符合 RFC 5893 双向文本规则,并说明它与 Unicode 规范化、字符白名单和完整标识符校验的边界。307 收藏 -
Go malgo 配置立体声 PCM 播放时,应把设备类型设为 Playback,在 Playback 子配置中声明 FormatS16 与 2 个声道,并在 Data 回调里按左右声道交错的字节布局填充输出缓冲区。本文还说明 framecount、设备格式协商和资源释放的关系。307 收藏