Go语言技术文章
-
从 Go TLS 握手错误、ServerName、RootCAs 和 MinVersion/MaxVersion 入手,区分证书校验失败与协议版本协商失败,并给出不关闭证书验证的修正方式。128 收藏 -
Go 的 debug/pe 将 PE 文件的 OptionalHeader 暴露为 32 位或 64 位具体结构。本文用一个紧凑的类型 switch 读取 AddressOfEntryPoint 与 ImageBase,解释入口点 RVA、虚拟地址和文件偏移的区别,并补上解析失败与不可信输入的处理边界。128 收藏 -
Go 可用 japanese.EUCJP Decoder 将日文历史文件转为 UTF-8。本文给出只读源文件、新建独立副本的流式实现,说明错误清理、替换字符与迁移记录的边界。128 收藏 -
Go 计算文件 SHA-512 摘要时,优先用 crypto/sha512.New 配合 io.Copy 流式读取,再将 64 字节结果编码成 128 位十六进制文本。本文给出完整实现、摘要比较方式和文件变化、空文件与算法选择的边界。128 收藏 -
用 Go atomic.Bool 管理批处理进程的运行状态,说明 Load、Store、CompareAndSwap 的使用边界,并给出复用状态对象、减少循环额外分配的写法。128 收藏 -
Go os/exec 读取子进程输出时,CombinedOutput 和 StdoutPipe 为什么不能一起用?本文从 Cmd 的输出绑定关系出发,给出一次性收集与流式读取的正确写法,并说明 Start、读取、Wait 的顺序。128 收藏 -
Go 1.24 提供了 os.Root。本文说明如何用 os.OpenRoot 建立目录边界,再通过 Root.Open 打开相对文件,并区分普通子路径、目录回退、越界路径和符号链接的处理方式。127 收藏 -
Go embed 匹配为空时,先确认 go:embed 所在包目录,再检查模式、隐藏文件规则和 embed.FS 的树内读取路径。本文用一个小目录说明编译期匹配与运行时读取的边界。127 收藏 -
Go encoding/xml 映射命名空间失败时,关键不是记住 XML 前缀,而是让结构体标签匹配命名空间 URI。本文用 XMLName、xml.Name 和 Decoder.Token 逐层定位字段为空的原因。127 收藏 -
testing/synctest bubble 使用独立虚拟时钟,只有当所有 goroutine 都进入持久阻塞时才跳到下一个定时器时刻。本文比较真实时钟、手写 fake clock 与 synctest 的边界,并用原创示例说明 Wait、Sleep、外部 I/O 和根 goroutine 退出的影响。127 收藏 -
Go x/sync/errgroup.SetLimit 可以把活动 goroutine 数量限制在指定上限。本文从批量任务的实际场景出发,说明 SetLimit 与 Go、TryGo、WithContext 和 Wait 的配合方式,以及限制值、错误取消和任务提交时机的边界。127 收藏 -
Golang · Go教程 | 1星期前 | 标准库 · Go教程 · Go io.Reader io.EOF compress/gzip Multistream gzip.Reader io.ByteReader
Go gzip.Reader 默认会把连续 gzip 成员当作一个逻辑数据流。本文说明怎样用 Multistream(false) 固定当前成员边界,利用 io.ByteReader 保留尾部数据,并区分当前成员 EOF、下一个 gzip 成员和普通尾部。127 收藏 -
解释 Go context.AfterFunc 取消清理与停止回调的区别,用 sync.Once 和完成信号处理空输入、并发收尾及错误合并,并说明适用限制。127 收藏 -
用 Go net/netip 判断 IP 是否属于 CIDR 网段,关键是处理解析错误、零值、地址族不一致、IPv4 映射地址和 IPv6 zone。127 收藏 -
从 TypeParam.Obj 取得声明对象,再用原 FileSet 将 Pos 转成文件名与行列。示例说明泛型参数定位、NoPos、行指令以及源码导航服务中的位置边界。127 收藏