Go语言技术文章
-
Go 的 zlib.NewReaderDict 返回 ErrDictionary 时,通常不是压缩数据本身损坏,而是消费端传入的预置字典与生产端不一致。本文从 FDICT、DICTID、字节来源和读取器复用四个角度给出定位与修复方法。432 收藏 -
Go 1.23 起函数可以通过 iter.Seq 形态被 range 消费。本文说明 yield 签名、false 停止协议、资源清理和重复遍历边界。431 收藏 -
Go Mutex TryLock 返回 false 只表示当前没有拿到锁,不应继续读取受保护状态。本文比较阻塞等待、旧快照、快速拒绝和异步转交四种路径,并给出可直接改造的不可变快照示例。431 收藏 -
Golang · Go教程 | 3星期前 | 错误处理 · TLS · Go教程 · Go crypto/x509 证书过期 主机名错误 CertificateInvalidError HostnameError
Go 的 crypto/x509 中,证书过期通常通过 CertificateInvalidError 的 Expired 原因识别,主机名不匹配则通过 HostnameError 识别。本文比较 Verify、VerifyHostname 和字段检查的边界,并给出 errors.As 分流示例。431 收藏 -
Go select 一旦加入 default,在所有通信都未就绪时就会立即返回;如果它被放进无条件 for 循环,循环会反复检查而形成忙等。本文解释选择规则,并给出阻塞等待、ticker 和退避三种改法。431 收藏 -
Go 1.23 及以上可以用 runtime/debug.SetCrashOutput 把未处理 panic 和致命错误额外写入文件。本文说明文件打开、句柄复制、重复配置、关闭输出,以及日志轮换和监控进程的边界。431 收藏 -
Go slices.Chunk 会把切片按最多 n 个元素分成连续子切片,最后一组不足 n 个时会原样保留,不会补零或丢弃。本文说明尾组、空输入、非法 n 与子切片容量的处理边界。431 收藏 -
Go 的 math.Float32frombits 是按 IEEE 754 位模式把 uint32 重解释为 float32,不等同于 float32(x) 的数值转换。本文用对比代码说明两者差异,并给出按字节序组装输入、处理特殊值和保持可逆性的实用边界。431 收藏 -
Go Expr 可用 ?. 保护可空对象访问,再用 ?? 提供 nil 回退值。通过结构体环境示例,区分可空指针、缺失 Map 键、未知字段和空字符串,并保留编译与运行错误的处理出口。431 收藏 -
fmt.Appendf 可以把错误的可读文本追加到 []byte,但不能像 fmt.Errorf 的 %w 那样保留可追踪的错误链。本文用日志、协议缓冲和 Writer 场景说明两者如何配合。431 收藏 -
Go flag.FlagSet 的 ContinueOnError 会把解析失败作为错误返回,ExitOnError 则在解析失败时结束进程。本文结合子命令、测试和正式 CLI 入口,说明两者在控制流、退出码和错误接管方式上的区别。431 收藏 -
Go Lip Gloss 的 Width 是应用 Margin 前的块宽度,Padding 和 Border 都会占用这段空间。本文按内容区、框架开销和终端单元格测量拆开计算,并整理中文文本、超宽内容与回退排查方法。430 收藏 -
bufio.Writer 写入成功不代表数据已提交给文件。本文说明关闭前 Flush 的正确位置、写入与关闭错误的保留方法,以及 Flush 和 Sync 的区别,给出不覆盖已有文件的报表写入示例。430 收藏 -
Go 的 replace 会改变依赖内容和模块图,但不会单独完成版本选择。本文用 go list -m all、go env GOWORK 和最小 go.mod 示例,定位版本不一致并区分本地开发与正式构建配置。430 收藏 -
说明 math/bits.Len64 返回有效位数而不是最高位下标,覆盖零值边界、下标换算、uint64 类型保留和常见误用。430 收藏