Go语言技术文章
-
通过长度前缀 JSON 示例说明 Go rpc.Server.ServeCodec 如何接入自定义 ServerCodec,并梳理拆帧、并发写响应与关闭连接的边界。435 收藏 -
容器里的 Go 程序需要断点调试时,关键是把调试器参数和应用参数分开,并用关闭优化的二进制启动 headless Delve。本文给出一套可迁移的构建、启动、连接和排障步骤。435 收藏 -
Go 的 http.Client 跨主机重定向后看不到 Authorization,通常是默认的敏感头保护。本文用 CheckRedirect、可信 Origin 和手动跟随策略,给出安全可控的处理方式。435 收藏 -
已有 JSON 对象需要嵌入另一个 JSON 时,SJSON 应使用 SetRaw 或 SetRawBytes,而不是把对象当普通字符串传给 Set。本文从类型边界、原始片段校验和审计记录三个方面给出可落地写法。435 收藏 -
Go 自定义类型实现 encoding.TextMarshaler 后,可以用 MarshalText 统一输出 UTF-8 文本,并被部分标准编码包复用。本文从接口目标、接收者选择、错误边界和 JSON/XML 调用方讲清实现方式,再补上 TextUnmarshaler 的可逆设计。435 收藏 -
Go net/http 使用 http.Client.Timeout 设置客户端请求总超时,本文用一个可复用的小项目说明总预算、请求级 context、Transport 分阶段超时和超时错误识别。435 收藏 -
Go RawURLEncoding 不接受等号,需按发送方选择 URLEncoding 或无填充配置。本文给出兼容函数、预期样本与基准方法,说明错误处理和适用边界。435 收藏 -
Go 反射中的 CanConvert 用来判断 Value.Convert 是否会因转换规则触发 panic。本文从 Go 1.17 的迁移场景出发,说明基础类型、命名类型、切片转数组的长度边界,以及为什么可转换不等于数值无损。435 收藏 -
Go 分块 NFC 不能把任意片段独立正规化后拼接。本文比较整体、流式与追加接口,说明组合字符接缝、Writer 收尾及安全边界的选择方法。435 收藏 -
sync.OnceValue 不只缓存成功返回值:初始化函数一旦 panic,后续调用也会复现同一个 panic。本文结合标准库实现解释 once、valid、recover 与结果缓存的关系,并说明何时应该改用可重试方案。435 收藏 -
Golang · Go教程 | 1星期前 | Go教程 · Go net/http 反向代理 httputil ReverseProxy NewSingleHostReverseProxy Rewrite SetURL
Go 构造反向代理目标时,应先把后端地址解析成 url.URL,再交给 httputil.NewSingleHostReverseProxy。本文说明 scheme、host、基础路径和查询参数如何参与转发,并比较 Rewrite、SetURL 与旧 Director 的适用边界。435 收藏 -
Go 语法允许单返回值写成裸类型,但 go/types.Signature.Results 统一返回 Tuple。本文说明单返回值、命名结果、多返回值与空结果在类型模型中的对应关系,并给出安全读取 Len 与 At 的方法。435 收藏 -
Go 标准库 multipart.Reader.NextPart 返回一个 Part,普通字段通常没有文件名,文件部件可以通过 FileName 识别。本文用一个可复用的遍历函数说明 FormName、FileName、io.ReadAll、io.Copy 和 io.EOF 的边界,并补充 NextPart 与 NextRawPart 的差异。435 收藏 -
Go embed 报 pattern 不匹配时,先按声明源文件所在包目录计算相对路径,再区分文件不存在、模式语法非法、目录隐藏文件被过滤和模块边界越界。本文给出 string、[]byte 与 embed.FS 的修复方式和一套排查顺序。435 收藏 -
Go 服务里用 time.Ticker 做周期任务时,真正容易出问题的不是 tick 间隔,而是任务退出后计时器、goroutine 和下游资源没有一起收尾。本文用可复现的长期任务场景拆解 Stop 的边界、退出信号和复查方法。434 收藏