Go教程技术文章
-
Golang · Go教程 | 4星期前 | HTTP · go · Cookie · 跨域 · cors · cookie Go cors net/http SameSite 跨站请求 http.Cookie
Go 的 net/http 可以通过 Cookie.SameSite 表达 Strict、Lax 和 None 三种跨站发送策略,但浏览器是否真正带上 Cookie 还取决于 Secure、fetch credentials 和 CORS。本文从一个跨站会话场景拆开这些配置的职责边界。399 收藏 -
Go archive/zip 的 File.Open 返回解压后的条目内容并负责校验,File.OpenRaw 则返回 ZIP 内保存的原始压缩字节。本文比较两者的资源、错误和用途边界,演示如何安全导出原始数据。399 收藏 -
Go 的可选时间字段不要只靠一个特殊日期来猜。本文对比 time.Time 零值、*time.Time 的 nil 语义和显式 Valid 包装,说明它们在判断、JSON 编解码与持久化边界上的适用场景。399 收藏 -
Go sonyflake 通过 Settings.StartTime 设置 ID 时间字段的坐标原点。本文给出 v2 的配置写法,并按起始时间、机器号、生成结果三层排查创建失败和取不到 ID 的原因。398 收藏 -
Go filepath.Split 会在最后一个操作系统路径分隔符后拆出目录和文件名,并保留目录部分的分隔符。本文用一个小程序说明常见输入、末尾分隔符、连续分隔符,以及它和 filepath.Dir、filepath.Base 的区别。398 收藏 -
Go 的 path 包负责斜杠路径处理,不负责 URL 百分号转义。本文用一个批处理场景说明怎样只转义单个路径片段、避免路径层级被输入打乱,并减少重复组合带来的额外分配。398 收藏 -
跨语言二进制结构体经常因为 C 或 Python 的对齐填充导致 Go binary.Read 读错字段。本文用显式空白字段、固定字节序和完整错误处理,给出可移植的读取方式。397 收藏 -
Go 解析 JSON 请求时,默认宽松解码、Decoder 严格校验和 RawMessage 扩展区分别适合什么场景?本文用原创示例说明未知字段、必填校验与接口演进的取舍。397 收藏 -
Go 的 JSON 接口经常有一组固定字段和一个随类型变化的 payload。本文用 json.RawMessage 保留可变字段,按类型延迟解析,并区分缺失、null、类型不匹配和整体语法错误。397 收藏 -
Go x509 的 SetFallbackRoots 用于系统根证书池不可用时的兜底配置。本文说明 CertPool 构造、显式 Roots 优先级、nil 与重复调用边界,以及 GODEBUG 排查方式。397 收藏 -
testing.T.Name 会返回当前测试或子测试的完整名称,嵌套 Run 使用斜杠连接层级,重复兄弟名称会自动追加序号。本文用表格驱动测试说明如何读取、记录和正确使用这个名称。397 收藏 -
Go bytes.FieldsFunc 接收一个 rune 判断函数,可把逗号、竖线、空白等混合字符当作分隔符,并返回不含空元素的字节子切片。本文说明自定义判断、UTF-8 语义、空结果和必要时的复制边界。397 收藏 -
Gonum 的 YenKShortestPaths 适合在非负权图中取得多条不含环的候选路径。本文从带权有向图构造、k 与 cost 参数、路径读取和边界处理几个方面说明如何使用。397 收藏 -
io.NewOffsetWriter 把 WriterAt 映射成带基准偏移的写入器,但 Seek 不支持 io.SeekEnd。本文拆解失败原因、相对坐标与文件末尾定位的可执行写法。396 收藏 -
Go log/slog 的 GroupValue 可以把多个 Attr 组成一个 Group,再配合 slog.Group 形成 request、user、deployment 等嵌套字段。本文说明空组消除、切片不可变和不同 Handler 输出时的组织方式。396 收藏