Go教程技术文章
-
Go 接口返回多态 JSON 时,可先用 json.RawMessage 保留 payload,再根据 kind 选择目标结构体二次解码,并明确处理 null、未知字段和未知类型。229 收藏 -
解释 Go http.Cookie 同时设置 MaxAge 与 Expires 时的序列化结果、浏览器优先级,以及持久化、会话和删除 Cookie 的配置排查方法。401 收藏 -
Go 读取同名 Cookie 时,Cookie 方法只返回一个值;本文用 CookiesNamed 和 ParseCookie 保留头部顺序,并说明服务端无法从请求头反推出 Path、Domain、SameSite 与过期时间。465 收藏 -
用 Go 的 http.Cookie 设置 SameSite、Secure、HttpOnly 和过期时间,解释三种 SameSite 模式、MaxAge 正负值以及从 Set-Cookie 响应头排查属性不生效的方法。430 收藏 -
net/http.ServeMux 注册 /orders/ 子树后,访问 /orders 可能先发生尾斜杠重定向。本文用 Go 1.22+ 方法模式和 {$} 精确匹配说明如何固定 POST 规范地址、兼容两种路径,并排查 301、302、307、308 对请求体的影响。290 收藏 -
Go 1.22 之后,ServeMux 不按注册先后决定路由,而是比较方法、主机和路径对应的请求集合。本文用字面量、单段通配符、尾部通配符和方法模式说明什么叫更具体,为什么有些模式会在注册时直接冲突。233 收藏 -
Go 1.22 的 net/http.ServeMux 支持把 HTTP 方法和通配符直接写进路由模式。本文用小例子说明 PathValue、最具体匹配、冲突 panic 和 405 的判断方法。332 收藏 -
io/fs 使用统一的斜杠逻辑路径,操作系统文件 API 却需要本地路径。本文用 fs.ValidPath、filepath.Localize 和 filepath.Join 说明如何安全转换,并解释 Clean、FromSlash、ToSlash 的边界。107 收藏 -
filepath.Clean 只做词法清洗,不能单独保护固定根目录。本文用 Go 标准库示例说明如何组合 filepath.IsLocal、fs.ValidPath、filepath.Localize 和 filepath.Join,处理用户路径与跨平台文件名。123 收藏 -
fs.ValidPath 并不会因为反斜杠本身判定路径非法。本文拆开 io/fs 逻辑路径、Windows 本地路径转换和文件系统实现三层边界,说明如何正确处理跨平台路径。445 收藏 -
Go exec.CommandContext 超时后,不要用 cmd.Process 非空判断进程存活。本文用 Run/Wait、ctx.Err、ExitError 和 ProcessState 区分取消原因、直接子进程终态、输出采集与资源回收边界。364 收藏 -
Go 的 os/exec 使用 StdoutPipe 或 StderrPipe 时,真正容易卡住的通常不是少写一个 Close,而是读取未完成就 Wait,或子进程继承了输出管道。本文给出无手工管道和并发读取两种写法,并整理取消、错误处理与 EOF 排查要点。241 收藏 -
Go 的 os/exec 不需要把命令拼成一整行:将程序名和每个参数分别传入,带空格的路径就能保持完整,再按场景选择 Output、CombinedOutput 或 StdoutPipe,并用 Wait 完成回收。313 收藏 -
filepath.WalkDir 会访问符号链接这一项,但不会自动进入它指向的目录。本文用 DirEntry、os.Stat 和错误回调拆开链接本身、目标信息、失效链接与权限错误的处理边界。132 收藏 -
使用 Go filepath.WalkDir 扫描目录时,先处理回调错误并记录 path,再用 SkipDir 控制目录过滤;本文还说明 DirEntry、符号链接和根路径失败的边界。162 收藏