Go语言技术文章
-
Go compress/gzip 默认会把连续 gzip 成员合并读取,第一次 io.EOF 不一定代表单个成员结束。本文用 Multistream(false)、Reset 和 bufio.Reader 区分成员边界、正常尾部与损坏数据。322 收藏 -
Go generate 的关键不是把命令写得更长,而是把指令放进正确的源码包,让相对路径、生成器和输出文件拥有稳定的目录关系。321 收藏 -
Golang · Go教程 | 3天前 | 配置 · go · TLS · 网络安全 · TLS 1.3 Go crypto/tls最低TLS版本 tls.Config.MinVersion TLS 1.2 Go TLS配置 ConnectionState Version
围绕 Go crypto/tls 的 tls.Config.MinVersion,说明 TLS 1.2 与 TLS 1.3 的最低版本选择、客户端 Transport 和服务端连接绑定方式,以及用 ConnectionState 核对协商结果的迁移边界。321 收藏 -
Go errors.Join 会丢弃传入的 nil 错误;如果所有参数都是 nil 则返回 nil,否则返回只包含非 nil 成员的组合错误。本文用边界输入说明如何判断和检查成员。320 收藏 -
Go encoding/gob 解码到已有结构体时不会先清空目标,流中缺少的字段和发送端被省略的零值字段可能继续保留旧内容。本文用最小示例说明字段合并语义,并比较复用目标、解码到新变量和存在性字段三种处理方式。319 收藏 -
Go build 的 -ldflags 不是主动截断空字符串,问题通常来自 Shell 展开与 Go 参数列表拆分。本文说明 -X 的完整 assignment 写法、带空格值的引号边界,以及用 go build -n 排查参数丢失。318 收藏 -
Go 的 select default 只负责非阻塞选择,不负责等待取消。本文用 worker、ctx.Done、关闭 channel 和 ok 判断说明正确处理取消信号的方法。318 收藏 -
Go 的 nil map 读取会返回元素零值,但写入会触发 panic。本文用可复现的判断方式拆开读取、ok 值、len、make 和嵌套 map 的边界,给出稳定修复方案。318 收藏 -
Go container/list 读取链表节点的实用写法:从 Front、Back 开始,用 Next、Prev 遍历,通过 Value 和类型断言取出业务数据,并处理空链表与删除节点边界。317 收藏 -
regexp.QuoteMeta 只能构造正则字面量,不能替你修正 Go 字符串字面量。处理 Windows 路径时要分清源码、运行时字符串和 RE2 模式三个边界。316 收藏 -
Go slices.Delete 会原地移动元素并清零被移出范围的尾部槽位,但切片容量仍可能保留底层数组。本文用指针元素说明删除后的引用清理、垃圾回收边界和批量删除策略。316 收藏 -
说明 Go for-range channel 为什么依赖 close 才能结束,拆解零值与关闭状态的区别、关闭责任、重复 close 风险和测试检查方法。316 收藏 -
讲清 Go atomic.Value 零值 Load、首次 Store 类型确定、sync.Once 懒初始化和不可变配置快照之间的边界,避免 nil 与类型不一致 panic。314 收藏 -
strings.Map 返回负值时会删除对应的 Unicode 字符,但 len 统计的是字节数。本文用一个 Go 文本清洗器说明如何统计删除数量、判断空结果,并区分合法与非法 UTF-8 输入。314 收藏 -
Go internal 的可见性按导入路径中的父树判断,而不是按物理目录、仓库或 go.work 判断。本文用多模块示例拆开允许范围、排查命令与三种包边界修复方案。314 收藏