Go教程技术文章
-
Go 的 string 按字节保存,按字节截断中文或表情可能切入 UTF-8 编码中间。本文用 unicode/utf8 设计安全的字节上限切分函数,并说明非法输入、rune 计数和性能边界。200 收藏 -
Go 中排查 unicode/utf8 非法序列时,先用 Valid 判断整体字节,再用 RuneError 与 size=1 定位具体偏移,并区分截断、错误编码和真实替换字符。243 收藏 -
讲清 Go 中 string、byte、rune 与 UTF-8 字节的区别,演示 DecodeRuneInString 的读取方式,以及 ValidString 和 RuneError 的异常处理。112 收藏 -
strings.CutPrefix 不只是删除前缀,更重要的是用 found 明确控制后续分支。本文从协议识别、多个业务前缀、空前缀和旧 Go 版本兼容几个边界,整理一套可复用的判断写法。375 收藏 -
Go strings.CutPrefix 返回 found=false 时,优先检查前缀是否真的位于字符串开头、大小写和空格是否一致,并正确处理未匹配时原字符串会原样返回的规则。492 收藏 -
用 Go strings.CutPrefix 读取并移除字符串前缀,掌握 after、found 两个返回值,以及未匹配、空前缀、大小写和 Unicode 等边界。177 收藏 -
Go bytes.Reader 同时支持顺序读取、绝对偏移读取和定位。本文区分 Len、Size、ReadAt、Seek 的职责,并用 io.SectionReader 固定下游可见的缓冲区间。465 收藏 -
解释 Go bytes.Reader 中 Len、Size、Read、ReadAt、ReadRune、Seek 和 Reset 的关系,帮助定位读取后长度变化与游标位置不一致的问题。184 收藏 -
Go 的 bytes.Reader 适合从 []byte 创建只读游标。本文用一个可运行示例说明 Read、ReadAt、Seek、Len、Size 和 Reset 的区别,帮助你按顺序读取或按偏移取字节。125 收藏 -
io.SectionReader 只能读取创建时指定的逻辑窗口。本文解释 [off, off+n) 边界、Read 与 ReadAt 的 EOF 表现,以及跨范围读取时如何选择扩大窗口或访问底层 ReaderAt。223 收藏 -
讲清 Go io.SectionReader 的逻辑片段长度与底层文件实际长度的区别,结合 Size、Read、累计字节数和 io.EOF 判断短片段、空片段与完整读取。164 收藏 -
用 Go 的 io.SectionReader 从 ReaderAt 数据源中限制固定起点和长度,说明 Read、ReadAt、Seek、Size、Outer 的偏移口径、EOF 边界以及字节切片的常见坑。178 收藏 -
用 Go os.File.ReadAt 按偏移并发读取文件,讲清分片边界、并发限制、短读与 EOF 处理,以及它和 Read、Seek 的取舍。178 收藏 -
os.File.ReadAt 返回 io.EOF 不一定代表本次没有数据。关键要先看 n 与 len(buf) 的关系,再决定处理有效字节、接受文件尾部或返回 io.ErrUnexpectedEOF。501 收藏 -
本文用固定长度文件记录和分片场景说明 Go os.File.ReadAt 的偏移参数、短读与 EOF 处理,并给出字节转换和 SectionReader 的使用边界。161 收藏