Go教程技术文章
-
go-smtp 通过 SendMail 的 []string 或 Client 的多次 Rcpt 调用,把多个地址加入同一封邮件的 SMTP envelope。本文进一步区分 To、Cc、Bcc 头部与实际投递地址,并说明拒收和连接清理边界。296 收藏 -
用 Go archive/tar 把大文件直接流式写入 tar 归档,准确设置 Header.Size,复用 io.Copy 处理单文件、多文件和网络输出,避免把整个文件读入内存。296 收藏 -
Go 反射中 CanSet 为 false 通常不是 Set 写错,而是 Value 没有可写地址,或字段受未导出规则保护。本文从 ValueOf、Elem 和结构体字段三个现场定位原因,并给出安全修改与检查方法。295 收藏 -
Go big.Float 比较结果不稳定,通常是精度、舍入模式或类型转换顺序不一致。本文用 Int、Rat 和 Float 的边界示例,说明如何设置二进制精度、检查 Acc,并用 Cmp 完成可靠比较。295 收藏 -
Go 的 net.Dialer 通过 LocalAddr 指定出站连接的本地 IP 和端口,通过 Timeout 限制拨号等待;本文说明 tcp 地址类型匹配、context 截止时间、连接读写 deadline 以及常见绑定失败的排查方法。295 收藏 -
用 Go io.Pipe 把压缩写入端和上传读取端连接起来,理解无内部缓冲带来的自然背压,并处理成功关闭、生产失败和上传失败的资源收口。295 收藏 -
io.Reader 一次 Read 不保证填满缓冲区。本文用固定 8 字节头和变长负载示例,讲清 io.ReadFull 的补齐语义、EOF 与 ErrUnexpectedEOF 的区别、长度上限和网络读超时。295 收藏 -
Go 的 filepath.ToSlash 只负责把当前系统路径分隔符转换成斜杠,适合生成跨平台资源键、归档条目和 URL 风格路径。本文用一个资源清单场景拆开 ToSlash、Clean、path 与 PathEscape 的边界。295 收藏 -
Go 的 http.Header.Get 只返回同名请求头的第一个值,完整读取应使用 Header.Values。本文结合 Add、Set、Get、Values 的差异,说明大小写规范化、直接 map 访问和返回切片复制的排查边界。295 收藏 -
Go Ticker.Stop 不会关闭通道,也不会终止工作 goroutine。通过串行周期任务示例,说明计时器所有权、Context 取消、done 完成确认,以及慢任务和新旧计时通道语义。295 收藏 -
Go 子测试调用 t.Parallel 后,循环变量、临时资源和进程级状态都可能造成互相影响。本文用一个表格驱动测试拆开共享来源,给出输入绑定、资源隔离、清理边界和复查命令。295 收藏 -
Go 标准库 encoding/base64 的 AppendEncode 可以把编码结果直接追加到已有字节切片。本文按完整工作流解释容量预留、返回切片、URL-safe 编码和多段追加的边界。295 收藏 -
讲清 Go x/text/message MatchLanguage 的参数顺序、语言回退和 Printer 使用边界,用同一个 language.Tag 统一翻译文本与地区数字格式。295 收藏 -
Go maphash.Hash 的哈希结果取决于 Seed 与写入字节序列,而不是字节通过 WriteString 还是 Write 进入。本文说明两条写入路径的等价条件、顺序边界、Reset 用法和 Hasher 中的编码方式。295 收藏 -
Go encoding/json 可用三态值字段区分缺失、显式 null 与正常整数。示例说明自定义解码、错误结果隔离和批次状态重置,并讨论固定结构的分配取舍。295 收藏