Go语言技术文章
-
Go 中 len(string) 统计的是 UTF-8 字节数,而 unicode/utf8.RuneCountInString 统计的是 rune 数。本文用 Go 示例拆开两者的差异,并说明 []byte、非法 UTF-8 和字符限制场景该怎样选择。424 收藏 -
Go strings.FieldsFunc 通过 rune 判定函数按自定义规则切分文本,连续分隔符会合并,首尾分隔符会被丢弃,结果字段始终非空。本文用原创示例说明多种分隔符、Unicode 空白以及它和 strings.Split 的边界差异。136 收藏 -
Go 字符串切片可能继续关联原始大字符串,导致只保留一小段文本时仍占住更大的底层存储。本文说明 strings.Clone 的适用边界、生命周期放置位置、空字符串行为和复制成本,帮助你只在有内存保留证据时做独立复制。176 收藏 -
Go bytes.Buffer.WriteTo 会把缓冲区的未读内容写入 io.Writer,并返回已经写出的字节数和错误。本文用最小示例说明完整写入、短写入、错误保留和发布前检查,帮助你避免重复发送或误判成功。464 收藏 -
Go io.NewSectionReader 将 ReaderAt 限制在指定偏移和长度内,掌握 Read、ReadAt、Seek、Size 与 Outer 的边界语义。442 收藏 -
Go compress/flate 可用预置字典复用独立短记录的公共前缀。本文给出配套压缩与解压示例,说明字典版本、错误处理及压缩收益的判断边界。115 收藏 -
讲清 Go archive/zip 的 File.DataOffset 如何定位 ZIP 条目数据起点,并用 CompressedSize64 计算安全物理范围,区分 Open、OpenRaw 与偏移读取的使用边界。307 收藏 -
Go 1.23 引入的 os.CopyFS 可以把 embed.FS 等 fs.FS 资源复制到本地目录。本文用一个嵌入静态资源的场景说明调用方式,并梳理目录创建、既有文件冲突、符号链接和首个错误的处理边界。443 收藏 -
用 Go 1.24+ 的 os.OpenInRoot 在固定目录内打开外部传入文件名,理解 ..、绝对路径、符号链接、错误处理和版本边界,避免把 filepath.Join 当成安全隔离。154 收藏 -
Go 的 url.UserPassword 会创建包含用户名和密码的 Userinfo,再挂到 url.URL.User 字段中。本文说明 URL 的构造、编码、读取与 Redacted 脱敏输出,并提醒不要把密码直接写入日志或普通 URL。160 收藏 -
Go io.ReadAll 配合 LimitReader 时,应读取上限加一字节识别超限。本文说明 EOF 语义、受限读取封装、错误优先级及资源关闭责任。176 收藏 -
Golang · Go教程 | 2星期前 | 标准库 · 缓存 · HTTP · Go教程 · Go http.ServeContent Last-Modified If-Modified-Since ModTime
Go http.ServeContent 的 modtime 不只是一个参数:它会影响 Last-Modified 和 If-Modified-Since 的条件请求判断。本文从缓存未命中的排查场景出发,讲清零时间、秒级精度、304 响应与文件修改时间的正确衔接。323 收藏 -
Go 的 os.File.Readdirnames 适合把目录名称按固定批量读取。本文说明目录游标如何推进、怎样处理部分结果与 io.EOF,以及为什么它不会递归或排序。271 收藏 -
Golang · Go教程 | 2星期前 | 标准库 · HTTP · 超时控制 · Go教程 · 工程实践 · Go 上下文取消 handler HTTP超时 http.TimeoutHandler
http.TimeoutHandler 可以为单个 Go HTTP 处理器设置时间上限,超时返回 503 并让后续写入得到 ErrHandlerTimeout。本文说明如何配合请求上下文使用,以及它在流式响应、连接接管和服务级超时中的边界。403 收藏 -
Go 1.22 之后,http.ServeMux 用模式覆盖的请求集合判断优先级,而不是按注册顺序或通配符名称决定。本文比较静态路径、单段通配、剩余路径通配、方法和主机,并说明如何识别冲突模式。400 收藏