Go语言技术文章
-
Go 的 OpenFile 和 Create 传入的是创建前权限,Unix umask 还会屏蔽其中一部分位,因此最终权限可能比参数小。本文说明 perm、umask 与最终模式的关系,并给出不污染进程全局状态的处理方式。394 收藏 -
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 收藏 -
Go time.Duration 序列化成 JSON 时,裸数字代表纳秒,容易被误读为毫秒。本文给出带单位字符串、明确单位整数和旧数据迁移的协议设计方法。394 收藏 -
Go HTTP 响应体未关闭会占用资源。本文说明 Close 与 EOF 的区别,给出有读取上限的单次请求函数,并解释循环 defer、错误状态、超时与连接配置的处理边界。394 收藏 -
go test 同时使用 -race 和 -timeout 时,先用普通测试建立基线,再区分 race 报告、测试二进制超时和检测开销,最后用 T.Deadline 与 GORACE 日志缩小问题范围。394 收藏 -
解释 Go slices.Clip 如何把子切片的容量收紧到长度,结合三索引切片、append 行为和大数组保留场景,给出可运行的验收代码与使用边界。393 收藏 -
flag.VisitAll 遍历的是 FlagSet 中已定义的全部参数,而 flag.Visit 只遍历本次 Parse 或 Set 后进入 actual 的参数。本文用一个命令行配置示例拆开两者边界,说明默认值、重复赋值和未解析参数该怎么排查。393 收藏 -
Go 中 len 统计 UTF-8 字节数,utf8.RuneCountInString 统计 rune 数量。本文结合有效性检查和截断场景,说明两者结果不同的原因及选择方法。393 收藏 -
Go 的 runtime.KeepAlive 不是强制 GC,也不是替代 Close;它用于把对象的最后安全使用点明确到低层调用返回之后,避免终结器过早关闭底层句柄。本文用文件描述符和 cgo 资源说明放置位置、职责边界与生产检查项。393 收藏 -
Go channel 的关闭责任应由能确认所有发送结束的一方承担。本文用单发送方、多发送方和取消信号三个场景,说明如何避免向已关闭 channel 发送导致 panic。393 收藏 -
Go build 报头文件找不到时,不要先盲目改路径。按 CGO_ENABLED、CC/CXX、头文件搜索路径和 pkg-config 四层检查,通常可以快速定位 cgo 构建边界。393 收藏 -
Golang · Go教程 | 2个月前 | Go教程 · net/http · range Go http.ServeContent ETag If-None-Match 条件请求 If-Modified-Since
Go http.ServeContent 的条件请求异常,通常要从 io.ReadSeeker、modtime、ETag 和 Range 四个边界排查。本文给出原创 handler 与请求检查方法,区分 304、412、416 以及读取失败。393 收藏 -
Golang · Go教程 | 1个月前 | 性能优化 · 并发编程 · sync.Pool · 内存管理 · Go教程 · 垃圾回收 对象池 bytes.Buffer 临时对象 Go sync.Pool
sync.Pool 适合复用可随时丢弃的临时对象,不是可靠缓存或资源池。本文围绕 New、Get、Reset、Put 的借用边界,说明为什么不能依赖命中、如何避免归还后继续使用,以及怎样丢弃异常大的缓冲区。393 收藏 -
CommentMap 记录注释与 AST 节点的关联,但 go/printer 仍按 token.Pos 把 File.Comments 穿插到输出中。本文说明删除、替换和移动节点时注释错位的根因与修复方法。393 收藏