Go语言技术文章
-
strconv.ParseInt 的错误不能只看 Error() 字符串。本文用 NumError、errors.Is 和参数边界区分语法错误、数值越界、非法进制与非法位宽,并给出适合接口输入的处理方式。398 收藏 -
Go ascii85.NewEncoder 可能暂存不足四字节的尾块。本文解释 Write 与 Close 的职责,给出完整编码示例,并说明错误处理、外层缓冲和消息边界。398 收藏 -
用 Go reflect.TypeFor 和 Implements 构建类型能力检查工具,按候选名称判断 io.StringWriter 接口支持情况,提供完整代码、退出码与回退思路,并区分类型匹配和实例可用性。396 收藏 -
Go 升级后 runtime.KeepAlive 相关代码出现差异时,先不要把问题归因于 API 随机变化。本文从对象可达性、终结器、底层资源句柄、数据竞争和 unsafe/cgo 约束五条线定位原因,并给出正确放置 KeepAlive 的最小写法。396 收藏 -
Go 的 crypto/sha512.New384 返回 SHA-384 哈希对象,摘要原始长度固定为 48 字节。本文结合 hash.Hash、Sum 的追加语义和十六进制编码,说明如何避免把字节长度误读成字符串长度。396 收藏 -
Go strconv.ParseBool 只接受固定的 1、t、true、0、f、false 等布尔文本,yes/no、on/off 和带空格的输入需要业务层先明确处理。本文从配置、环境变量和表单输入三个场景说明如何检查 error、区分 false 与解析失败,并用适配函数扩展业务别名。394 收藏 -
Go database/sql 的 ColumnType.Nullable 返回 nullable 和 ok 两个值。本文解释驱动不支持时为什么不能把 false 当成不可空,并给出跨数据库代码保存 unknown、按需做方言适配的兼容写法。394 收藏 -
Golang · Go教程 | 6天前 | 标准库 · HTTP服务 · Go教程 · Go net/http X-Forwarded-For http.Request RemoteAddr Forwarded 客户端地址
Go 的 http.Request.RemoteAddr 只能表示当前 Go 服务看到的 TCP 对端;部署在反向代理后时,客户端地址通常来自代理转发头,但必须先确认代理可信。本文给出可复用的解析函数、IPv6 处理和日志边界。393 收藏 -
HostLayout 约束的是 Go 结构体在当前主机上的内存布局,不是跨平台、跨进程或长期存储的字节协议。本文从一个布局误用场景拆解原因,并用 encoding/binary 演示如何显式指定字段宽度与字节序。393 收藏 -
用 Go 的 go/parser.ParseFile 解析单文件源码,保留注释并从 ast.File 读取包名、声明和文档字段,同时说明 FileSet、语法错误与完整包分析的边界。393 收藏 -
Go 的 url.URL 会同时保留解码后的 Path 与可选的 RawPath 编码提示。本文用具体 URL 说明两者为什么不同,并用 EscapedPath 判断最终输出。391 收藏 -
Go os.ReadDir 返回的 DirEntry.Type 只是文件类型位的子集,不能当成完整 FileMode。本文用一个目录扫描器说明快速分类与 Info 补读的边界,以及如何处理元数据读取错误。390 收藏 -
解释 iter.Pull 的 next、stop 与提前退出责任,对比直接 range 和手动拉取,提供带清理标记的示例,并说明 defer 作用域、自然耗尽及重复停止的边界。390 收藏 -
Go 的 time.LoadLocationFromTZData 可以直接从标准 IANA TZif 字节创建 Location,适合把时区数据随程序一起打包。本文说明数据来源、参数语义、错误处理以及与 ParseInLocation 的组合方式。390 收藏 -
bufio.Reader.ReadBytes 找不到分隔符就会同时返回已读片段和错误。本文以带读取期限的长连接为例,说明怎样保留超时返回的数据,在同一个 Reader 上延长 deadline 后继续拼接,并区分临时超时、EOF 与不可恢复错误。390 收藏