Go语言技术文章
-
filepath.Clean 只做词法规范化,不会把用户路径限制在某个目录,也不会处理符号链接越界和检查使用之间的竞态。本文对比 Clean、IsLocal、Rel 与 Go 1.24 的 os.Root,并给出文件服务的选择清单。277 收藏 -
Go filepath.EvalSymlinks 失败时不要只看字符串。本文用 errors.Is 区分目标不存在、符号链接断裂和权限等错误,并给出可直接改造的排障代码。197 收藏 -
Go sync.Map.Swap 会原子替换键值,并返回替换前的 previous 与表示键是否存在的 loaded。本文用固定类型示例说明首次写入、已有键替换、nil 旧值和类型断言边界。485 收藏 -
Go CSV 变长记录可设置 FieldsPerRecord=-1,再限定列数范围、必填值、字段长度与记录数。本文给出总字节预算加一字节识别超限的示例,并解释多行字段、复用切片与提交边界。292 收藏 -
Go 的 OpenFile 和 Create 传入的是创建前权限,Unix umask 还会屏蔽其中一部分位,因此最终权限可能比参数小。本文说明 perm、umask 与最终模式的关系,并给出不污染进程全局状态的处理方式。394 收藏 -
Go 的 encoding/csv 会按引号状态判断记录边界。本文用多行字段示例说明怎样保留引号内换行,并给出字段数检查、脏数据容错和大文件逐条读取的取舍。135 收藏 -
Go JSON 时间字段可通过自定义 UnmarshalJSON 兼容有限格式,并显式约定无时区输入的含义。本文给出字段存在性、null、错误反馈和 UTC 统一回写的完整示例。214 收藏 -
Go json.Decoder 可能在 Decode 时提前读取底层 Reader。本文用 Buffered、io.MultiReader 和边界检查,把尚未消费的字节安全交给后续流式解析。376 收藏 -
Go encoding/json 默认解码会让 JSON 缺失字段、null 和零值在部分类型上落到相同结果。本文用指针、json.RawMessage 和自定义包装类型,逐步保留字段存在性、null 状态与有效零值。138 收藏 -
Go HTTP Server 流式下载应优先监听 r.Context().Done(),并把取消信号传给上游数据源;ResponseWriter.Write 错误作为补充信号,及时停止读取并释放资源。158 收藏 -
Go http.Server.ErrorLog 的类型是 *log.Logger,适合接收连接错误、Handler 异常和底层文件系统错误。本文用并发安全的 io.Writer 适配器把标准库消息输出为 JSON 行,并区分访问日志与 ConnState 的职责边界。411 收藏 -
Golang · Go问答 | 16小时前 | go · Context · 服务端 · net/http · Go http.server context.Context 请求上下文 BaseContext ConnContext
Go http.Server.BaseContext 用于为一个监听器接收的请求提供统一根 context,默认是 context.Background()。本文用最小示例说明它与 ConnContext、Request.Context 的区别,以及取消、返回 nil 和多监听器场景的边界。393 收藏 -
Golang · Go问答 | 17小时前 | HTTP · Cookie · Go问答 · 排错 · Go Set-Cookie http.Cookie ParseSetCookie Unparsed
Go net/http 解析 Set-Cookie 时,无法映射到 Cookie 已知字段的属性会以原始片段进入 Unparsed;语法错误则通过 error 返回。本文说明怎样读取 Unparsed、如何记录未知属性,以及为什么不能把 Cookie.String 当作未知属性的回写器。209 收藏 -
Go http.Transport 的 WriteBufferSize 控制 Transport 写入网络连接时使用的缓冲区。本文说明零值默认行为、共享 Transport 的配置方式、按连接评估内存代价,以及哪些问题不该靠调大写缓冲解决。434 收藏 -
Go HTTP Transport 复用连接时,应分别设置空闲池预算、每目标总连接上限与超时。通过共享客户端小项目说明响应体处理、httptrace 观察及 HTTP/2 下的取舍。227 收藏