Go语言技术文章
-
filepath.Join 采用客户端目标系统的路径规则,不能自动代表 SFTP 远端命名空间。本文区分本地与远端路径,给出单文件名拼接示例,并说明 ToSlash、词法清理和服务端权限的边界。396 收藏 -
Go http.Cookie.Valid 并不检查 SameSite 枚举。本文拆分标准库字段校验、SameSite 序列化与业务白名单,帮助定位 Cookie 看似被拒绝或属性消失的问题。396 收藏 -
用 Go reflect.TypeFor 和 Implements 构建类型能力检查工具,按候选名称判断 io.StringWriter 接口支持情况,提供完整代码、退出码与回退思路,并区分类型匹配和实例可用性。396 收藏 -
Go 升级后 runtime.KeepAlive 相关代码出现差异时,先不要把问题归因于 API 随机变化。本文从对象可达性、终结器、底层资源句柄、数据竞争和 unsafe/cgo 约束五条线定位原因,并给出正确放置 KeepAlive 的最小写法。396 收藏 -
Go 的 crypto/sha512.New384 返回 SHA-384 哈希对象,摘要原始长度固定为 48 字节。本文结合 hash.Hash、Sum 的追加语义和十六进制编码,说明如何避免把字节长度误读成字符串长度。396 收藏 -
go/types.Info.InitOrder 记录的是包级变量初始化表达式按依赖排序后的结果,不包含 init 函数调用。本文从类型分析与程序启动两个生命周期拆开解释,并给出读取 InitOrder、处理空结果和不完整检查结果的实用写法。396 收藏 -
开启 encoding/csv.Reader 的 ReuseRecord 后,Read 可能复用上一条记录的切片。本文解释下一行为什么会改写当前字段,以及何时复制记录、ReadAll 和并发读取有哪些边界。396 收藏 -
把用户输入交给文件系统读取前,先用 fs.ValidPath 限制为 io/fs 约定的相对路径,再配合 os.DirFS 或 fs.Sub 固定根目录。本文给出可迁移的 Go 代码、错误分类和符号链接边界。396 收藏 -
用 Go log/slog 编写自定义 Handler 时,Record.Attrs 可以按记录顺序遍历当前日志属性。本文给出 Handle 实现、Group 处理和边界清单。396 收藏 -
Go tabwriter 中文表格错位常因码点等宽假设与实际显示宽度不同。通过输入、计数和终端环境对照,区分列边界问题,选择显示宽度策略或结构化导出,并正确处理缓冲与写入错误。396 收藏 -
Ticker.Stop 不会关闭通道或等待业务任务。区分循环退出、取消信号与完成通知,通过同步任务示例处理 break 误用、select 竞争和在途工作,并说明新旧计时器通道语义的差别。396 收藏 -
用一个配置快照场景说明 Go slices.Clone 如何切断切片与底层数组的共享关系,比较直接赋值、append 和 Clone 的边界,并用竞态检测验证并发读取写入的安全做法。395 收藏 -
Go 1.25 新增的 http.CrossOriginProtection 可以在 net/http 层拒绝非安全跨源浏览器请求。本文用 Handler 接入、请求头判断和放行边界说明如何落地。395 收藏 -
Go 1.27 为小对象引入 size-specialized memory allocation。文章解释小于 80 字节的分配为何可能受益、整体收益为何不能照搬,以及如何用基准、二进制体积和 GOEXPERIMENT 做上线判断。395 收藏 -
Go 中 rune 是 Unicode 码点数值。想得到字符应使用 string(r),想得到十进制数字文本则使用 strconv.Itoa 或明确的格式化动词。395 收藏