Go语言技术文章
-
Go 用 json.Decoder 读取请求体或消息流时,EOF 可能代表正常结束,也可能暴露出截断输入。本文用连续 JSON、空白和尾部脏数据三个例子,拆开判断方式并给出可复查的读取代码。413 收藏 -
Go 模块下载并不只是从代理拿一个 zip。本文从一次依赖校验异常出发,拆开 GOPROXY、go.sum、GOSUMDB、GOPRIVATE 的信任边界,给出公有依赖校验、私有模块配置和替换后复核的实战检查清单。413 收藏 -
Go 接口如果只返回一段错误字符串,调用方很难判断应该重试、提示用户还是修复参数。本文从订单查询接口的真实场景出发,设计可演进的结构化错误、参数语义、错误映射和兼容策略。413 收藏 -
用 Go 标准库 crypto/ecdh 完成一次可验收的密钥交换,说明公钥 Bytes 序列化、NewPublicKey 恢复、曲线匹配和共享密钥一致性检查。413 收藏 -
用 Go 的 os.OpenFile 创建一次性文件时,O_CREATE 只负责允许创建,O_EXCL 才把已存在检查与创建绑定成一次原子操作。本文用并发示例拆开两种标志的边界,并给出可验证的错误处理方式。413 收藏 -
处理用户传入的文件名时,先用 filepath.IsLocal 做词法边界检查,再把通过的路径交给 filepath.Join;本文说明 Clean、绝对路径、空字符串和符号链接之间各自能解决什么问题。413 收藏 -
Go 命令行任务不要直接在信号分支里强行退出。用 os/signal.NotifyContext 取消工作循环,在收尾阶段保存最后确认的进度,并给写盘和资源关闭留出有限时间窗口。413 收藏 -
Go 返回接口值时,typed nil 会让接口看起来非 nil。本文用接口动态类型和值的关系,说明如何修正接口返回、error 成功分支和调用方复查。413 收藏 -
讲清 Go reflect.Value.IsZero 在 nil 接口、typed nil 指针和接口容器之间的判断边界,给出先检查 IsValid 的安全写法与复查清单。413 收藏 -
Go 的 multipart.Reader 需要保留 quoted-printable 部件时,应使用 NextRawPart。本文对比 NextPart 的透明解码行为,演示安全解析 boundary、保存原始 body,以及按需显式解码的实现边界。413 收藏 -
用 Go strings.IndexByte 定位 ASCII 协议分隔符,结合字符串切片完成低分配字段解析,并说明 -1、UTF-8、空字段和大字符串保留的边界。413 收藏 -
用 Go crypto/subtle.ConstantTimeCompare 做密钥或摘要校验时,长度不一致会直接返回 false。本文从源码语义、输入预处理和可复现测试三个角度说明如何避免误判与边界漏洞。412 收藏 -
Go 的 io.ByteScanner.UnreadByte 不是通用回退栈:它只约定回退最近一次成功的 ReadByte。本文用 token 读取示例说明连续回退、其他读取操作和 EOF 后的状态边界。412 收藏 -
Go build tags 没生效时,先用 go list 看文件是否进入 GoFiles,再分别检查 //go:build 的位置、表达式逻辑、文件名后缀和 -tags 参数。本文给出一套不依赖猜测的排查顺序。412 收藏 -
讲清 Go http.Request.Clone 复制请求并替换目标 URL 的正确写法,覆盖 Host、RequestURI、查询参数和 Body 重发边界。412 收藏