Go教程技术文章
-
使用encoding/binary包可高效处理二进制文件,支持基本类型和结构体的序列化;2.binary.Write和binary.Read配合字节序(如LittleEndian)实现数据读写;3.结构体字段需导出且不支持直接写入字符串、slice或map;4.可通过os.ReadFile读取小文件,大文件应分块读取避免内存溢出;5.bytes.Buffer作为内存缓冲区便于中间操作。470 收藏 -
本文介绍如何在Golang中不依赖SeleniumServer(如selenium-standalone或chromedriver服务进程),直接通过纯Go编写的WebDriver绑定库实现浏览器自动化控制。核心方案是采用github.com/fedesog/webdriver这一轻量、零外部依赖的客户端库。470 收藏 -
net.Interface返回空或panic的根本原因是运行环境限制:容器默认仅暴露loopback、无root权限导致接口不可见、IPv6未启用影响地址枚举;需检查Flags判断真实网卡,Addrs()需用To4()筛IPv4,HardwareAddr在macOS沙盒下常为nil。470 收藏 -
Go网络请求优化需复用连接、控制并发、设置超时、选合适协议:自定义http.Client调优Transport参数,用context设分级超时,限流防压垮,内部通信优先gRPC,避免JSON解析瓶颈。470 收藏 -
Go单元测试依赖gotest和testing包,命名需严格匹配(_test.go、TestXxx、*testing.T),t.Error继续执行而t.Fatal终止,推荐t.Run表驱动测试,-v查看日志,-cover统计覆盖率,依赖需接口抽象以保证快速隔离。470 收藏 -
本文介绍如何利用io.NopCloser和bytes.Buffer快速构造一个可测试的*http.Response,无需手动实现ReadCloser接口,适用于单元测试、Mock场景等。470 收藏 -
Go中无标准BM25库,需手写核心逻辑:预计算IDF、传入k1/b参数、确保分词后为token数而非字符数,并统一预处理(小写、去停用词、词干化等)以对齐Elasticsearch结果。470 收藏 -
Golang · Go教程 | 1个月前 | 标准库 · golang · 测试 · go · 迭代器 · 字符串处理 · Go 迭代器 换行 range over function strings.Lines
Go 1.24 引入的 strings.Lines 返回一次性迭代器,逐行保留换行符;本文用可运行示例拆开末尾换行、空输入、最后一行和重复消费等边界,并给出测试写法。470 收藏 -
Go 1.22 引入的 Request.PathValue 不是从 URL.Path 里随便切字符串,而是读取 ServeMux 匹配结果中的命名通配符。本文用最小路由示例核对普通通配符、{name...}、未匹配请求、URL 解码和 SetPathValue 的边界。470 收藏 -
用 encoding/xml.Decoder 按 Token 扫描大型 XML,只在命中目标元素时 DecodeElement,并用 Skip 跳过无关大节点,降低整体加载带来的内存峰值。470 收藏 -
Go 的 math/big.Float 使用二进制尾数精度,不是十进制小数位。本文用原创示例解释 SetPrec、舍入模式、运算接收者和 Text 输出之间的区别。470 收藏 -
使用 Go io.CopyN 写归档文件时,不能只看目标文件是否存在;本文用 written、err、临时文件和 Stat 组合确认目标长度,避免把部分归档误当成功。470 收藏 -
bufio.Reader.ReadString 读不到分隔符时,可能返回已经读到的字符串和 io.EOF。本文用返回值边界、最后一段处理和读取循环说明如何避免丢数据、误报错误与死循环。470 收藏 -
对比 iter.Seq2 键值流的三种错误契约,给出可复用的泛型收集器,并说明 maps.Collect、终态错误与 Pull2 的边界。470 收藏 -
最近由于项目需求,阅读一些Go语言编写的项目的源代码,在某一个函数中发现了一个奇怪的现象:一个函数的返回值类型声明的是一个接口的类型,但是实际在函数体内返回的却是一个结构体469 收藏