Go语言技术文章
-
Go bufio.Reader.ReadLine 返回 isPrefix 并不表示读取失败,而是说明当前 line 只是长行的一段。本文用原创 Go 示例说明如何拼接片段、处理 EOF 与 CRLF,并封装单行读取接口。411 收藏 -
Go 的 os.Chown 接收路径、uid 和 gid,用于修改 Unix 文件或目录的数字所有者信息。本文说明 -1 保留参数、符号链接与 Lchown 的差别、权限错误处理和 Windows/Plan 9 平台边界。329 收藏 -
io.NewOffsetWriter 把 WriterAt 映射成带基准偏移的写入器,但 Seek 不支持 io.SeekEnd。本文拆解失败原因、相对坐标与文件末尾定位的可执行写法。396 收藏 -
用 io.NopCloser 把 Reader 适配为 ReadCloser,解释空 Close 与真实资源清理的边界,并给出请求体和资源所有权示例。472 收藏 -
Go io.LimitedReader 可以把下游读取限制在固定字节数内。本文从上传流和请求体场景出发,说明 LimitReader 的上限语义、EOF 判断、底层错误处理,以及为什么限制器不会自动关闭原始 Reader。481 收藏 -
Go io.ReaderAt 适合按偏移读取固定长度记录。本文用偏移公式、完整读取示例和错误表,说明如何处理短读、EOF、溢出和底层 I/O 错误。333 收藏 -
Go 使用 slices.SortStableFunc 并让相同排序键返回 0,可以保留本次输入中等价记录的相对次序。本文区分批内稳定性与跨请求确定性,说明切片复制、分片收集和次级键的取舍。309 收藏 -
Go HTTP 服务优雅关闭的关键是先停止接收新连接,再等待活跃请求回到空闲;本文用 signal.NotifyContext、Server.Shutdown 和超时兜底组成可直接复用的关闭流程,并说明 WebSocket 等长连接的额外边界。157 收藏 -
Go Ticker.Stop 不会关闭通道,也不会终止工作 goroutine。通过串行周期任务示例,说明计时器所有权、Context 取消、done 完成确认,以及慢任务和新旧计时通道语义。295 收藏 -
Go 里的 defer 绑定外围函数返回,不会在 for 的每轮迭代结束时自动执行。把 defer 放在长循环中处理文件、响应体或 Rows,可能让资源持续累积;本文给出抽函数、显式关闭和代码审查的取舍。232 收藏 -
Go 接口只有具体类型和值都为空时才等于 nil。本文用最小示例说明 typed nil 指针装进 error 或 any 后为何仍然非 nil,并给出返回、排查和 reflect 的稳妥写法。163 收藏 -
Go MultiWriter 在同次 Write 遇错时会停止后续目标。本文用双输出改造示例区分前置副作用、外层重复调用和缓冲延迟错误,并说明 Flush 与重试边界。310 收藏 -
Go 反射修改字段没有生效,通常是反射值不可设置、字段未导出或赋值类型不匹配。本文用 ValueOf、Elem、CanSet 和字段类型检查说明安全更新路径。101 收藏 -
Go gzip 生成文件无法解压,通常与 Writer.Close、底层文件关闭顺序或读取未到 EOF 有关。本文给出可靠写法和排查清单。488 收藏 -
Go archive/tar 遍历时目录条目的内容为空并不一定是读取失败:TypeDir 只描述目录,不携带可读正文。本文用 Header、Reader.Next、Reader.Read 和文件类型判断拆开这个误区,并给出安全的遍历与提取写法。255 收藏