Go教程技术文章
-
Go 1.27 允许结构体复合字面量直接使用提升字段名。本文用可迁移的 Go 示例说明新旧写法、字段选择规则,以及指针嵌入和字段重叠等编译边界。186 收藏 -
Go 的 embed.FS 会保留嵌入目录的路径层级。本文用 io/fs.Sub 裁剪资源根目录,再通过 http.FS 和 http.FileServer 提供静态文件服务,并说明 URL 前缀、错误处理与发布边界。186 收藏 -
Go 的 mime.ParseMediaType 能按 MIME 规则解析 Content-Type 参数。本文说明带引号、分号和转义值如何还原,参数名为何使用小写读取,以及语法错误和业务类型不匹配时怎样处理。186 收藏 -
Go 切片直接赋值只复制切片头,slices.Clone 才会创建独立底层数组。本文从共享视图、可变副本、旧版本 append 写法和 nil/浅复制边界出发,给出按读写责任选择的实用判断。186 收藏 -
Go mime.FormatMediaType 可以把媒体类型和参数 map 序列化为规范字符串,自动处理名称小写、参数排序、引号转义和非 ASCII 参数编码。本文给出最小写法,并说明非法输入返回空字符串的边界。184 收藏 -
Lip Gloss 的左右文本面板要先分别 Render 成字符串,再用 JoinHorizontal 按顶部、居中或底部对齐;文章同时说明固定宽度、边框和终端总宽度预算。184 收藏 -
Go database/sql 可以通过 driver.Connector 把驱动连接配置交给 sql.OpenDB。本文说明 Connector、*sql.DB 和连接池的职责边界,并给出统一配置、多个独立连接池及关闭处理的写法。183 收藏 -
Go 读取 TLS 证书到期时间的关键是等待握手完成,再从 ConnectionState.PeerCertificates[0] 取得对端叶子证书,并读取 x509.Certificate.NotAfter。文章给出剩余时间计算、过期判断和客户端与服务端空证书边界的可复用写法。183 收藏 -
testing/synctest 判断 channel 是否阻塞,关键不在于看到某个 goroutine 停住,而在于它是否只能被同一 bubble 内的事件唤醒。本文从 channel 来源、synctest.Wait 到 nil channel 和外部 I/O,整理一套可操作的判断方法。182 收藏 -
Go 1.22 提供的 reflect.TypeFor[T] 可以直接取得类型参数 T 的反射类型。本文对比 reflect.TypeOf 的零值写法、指针 Elem 写法与 TypeFor 的迁移边界,说明哪些代码更清晰,哪些场景仍然必须保留动态反射。182 收藏 -
用 Go ldflags 把版本号、提交号和构建时间注入专用变量,讲清 -X 的路径写法、可复现构建边界、CI 参数和常见失效原因。182 收藏 -
slices.Collect 会把惰性 iter.Seq 完整物化为新切片,并从 nil 切片逐项 append。本文给出槽位、引用载荷与扩容峰值的估算方法,以及已知数量时用 AppendSeq 预分配、数量未知时限量或流式处理的写法。180 收藏 -
Golang · Go教程 | 6天前 | Context · 超时控制 · 并发编程 · 资源管理 · go语言 · Go并发 资源释放 WithTimeout context.AfterFunc 超时任务
context.AfterFunc 可以在超时取消后主动关闭任务占用的连接或句柄,从而解除阻塞。本文给出统一释放入口、完成信号与错误回传写法,并说明正常结束、超时竞争和远程收尾的边界。179 收藏 -
Go 多模块开发时,可以用 go.work 将多个独立 go.mod 纳入同一工作区,让业务模块直接使用本地依赖模块。本文对比 go.work、replace 和正式版本依赖的边界,并给出拆分与发布建议。179 收藏 -
Go 标准库 uuid.UUID 本质是 16 字节数组。本文讲清 36 字节规范文本、32 字符兼容文本和 16 字节原始二进制的区别,并给出安全双向转换、格式选择与避坑代码。178 收藏