Go语言技术文章
-
Go bytes.CutLast 找不到分隔符时应直接判断 found,而不是依赖 before 或 after 的长度。本文说明未命中、末尾命中、空分隔符、原始切片和 Go 版本边界。221 收藏 -
Go bufio.Reader.Buffered 返回的是当前缓冲区可以直接读取的字节数,不是底层缓冲区总容量,也不是文件或网络流的剩余长度。本文用 Read、Discard、Reset 对比说明它的实际含义。221 收藏 -
用 Go x/text/message SetString 登记不同语言的消息,再交给 Printer 按语言读取。本文从消息键、默认 catalog、语言标签和原文回退四个边界讲清写法,并整理全局登记与请求读取的工程取舍。221 收藏 -
Go泛型方法调用受约束承诺限制。本文用批量提取名称的示例解释值接收者、指针接收者与接口准入,比较多类型模块接入中的能力接口、切片选择和nil边界。221 收藏 -
Go fuzz 测试里的种子参数不是从 *testing.F 再取一次,而是由 f.Fuzz 回调的参数直接接收。本文用 string、[]byte 和 int64 示例说明 f.Add、回调签名、默认 go test、持续 fuzz、失败输入复现与 testdata/fuzz 的选择边界。221 收藏 -
Go 里把整数拼进响应、日志或协议帧时,strconv.AppendInt 可以直接追加到目标 []byte。本文说明怎样复用缓冲、提前规划容量,并分清中间字符串分配与切片扩容的边界。220 收藏 -
Go 的 -bench 参数支持按基准名称层级筛选。本文用 Benchmark 子基准示例说明正则匹配、父基准探测、精确到末级和团队脚本化运行的边界。220 收藏 -
Go goroutine 泄漏后不会被 GC 自动结束,通常是 channel、锁、WaitGroup 或 I/O 缺少可达的退出条件;本文从阻塞栈定位并用 context、关闭 channel 和 WaitGroup 修复。220 收藏 -
Go 1.27 为 crypto/x509 增加 ML-DSA 证书密钥支持。本文用 PEM 证书读取示例说明如何区分证书、公钥算法、ML-DSA 参数集与证书签名算法,并解释什么时候应使用 ParsePKIXPublicKey。220 收藏 -
Go unicode/utf16.AppendRune 接收一个 rune,把它的 UTF-16 编码追加到已有的 []uint16 切片并返回扩展后的切片。本文说明如何接回返回值、处理不同码点以及理解非法码点的 U+FFFD 替换。220 收藏 -
Go Ticker.Stop 不会关闭通道或结束工作协程。通过周期任务示例区分停止节拍、请求取消、等待完成与移除引用,并说明 Go 1.23 回收行为的适用范围。220 收藏 -
用一个可落地的 Go 基准示例说明 RunParallel 的全局计时边界、goroutine 局部状态初始化、pb.Next 分工和 ns/op 结果口径。220 收藏 -
filepath.Glob 返回空结果不一定是模式写错:无匹配时 err 为 nil,模式语法错误时才会返回 filepath.ErrBadPattern。本文给出区分两类结果的写法,并补充跨平台路径和文件系统错误边界。220 收藏 -
在 Go 批处理循环中复用 bytes.Buffer:用 Reset 清空长度、用 Grow 预留稳定容量,并处理 Bytes 别名与异常大容量,避免旧内容残留和不必要的分配。220 收藏 -
从 DNS 解析与 TCP/TLS 建连的分层排查开始,使用 net.Resolver 配置自定义 DNS 连接,并把它接入 http.Transport。219 收藏