Go教程技术文章
-
讲清 Go crypto/ecdh.NewPrivateKey 导入现有私钥的正确入口,区分原始标量、PEM 与 PKCS#8,并给出曲线长度、转换和存储边界。417 收藏 -
Go 使用 crypto/ed25519 验证带上下文的签名时,要让 message、Options.Context 和 PublicKey 在两端保持一致。本文用规范化消息和 VerifyWithOptions 示例说明常见失败原因。416 收藏 -
Go 里想让多个 goroutine 同时停止,适合关闭一个只承载通知的 channel,而不是逐个发送停止值。本文讲清关闭者、接收者、select 和 sync.Once 的边界。416 收藏 -
Go 1.23 的 slices.Chunk 返回的是原切片的连续子切片。本文用一个可运行例子说明修改分组结果为何会影响原切片,以及如何用 slices.Clone 建立独立副本。415 收藏 -
Go net/url 处理重复查询参数时,应从 url.Values 的 []string 读取并用 Add 追加;本文说明 Get、Set、Encode 与 RawQuery 的顺序边界。415 收藏 -
用一个可复用的 slog Handler 包装层统一过滤 password、token、email 等敏感字段,同时覆盖 WithAttrs、WithGroup 和嵌套 Group,业务日志调用保持不变。415 收藏 -
sync.Cond 的 Broadcast 只负责唤醒等待者,不代表条件已经属于当前协程。本文从有界队列场景拆解 Wait、Signal、Broadcast 的配合方式,解释为什么必须在循环中检查共享状态,并给出可运行的 Go 验证代码、错误写法和回归清单。414 收藏 -
目录扫描不一定要为每个文件再做一次 Stat。本文从 os.ReadDir 返回的 DirEntry 出发,区分 Type 与 Info 的职责,并给出按目录项类型筛选、必要时再调用 entry.Info 的可复现写法。414 收藏 -
Go 1.25 为 testing.TB 增加 Output 方法。本文用一个并行子测试场景说明它与 Log 的关系、缓冲何时刷新,以及测试函数返回后为什么不能继续写入。414 收藏 -
Golang · Go教程 | 3星期前 | 错误处理 · bufio · Go教程 · Go bufio.Scanner Scanner.Buffer 超长行 MaxScanTokenSize ScanLines
Go bufio.Scanner 默认 token 上限约为 64 KiB,扫描日志、CSV 或协议长行时可能返回 token too long。本文解释 Scanner.Buffer 的初始容量与最大上限,比较 Scanner、Reader 和整体读取的选择边界。414 收藏 -
go test -race 不负责提供共享变量读取接口,而是报告并发读写之间缺少同步的路径。本文用最小示例说明如何定位 Read/Write 栈,并选择互斥锁或原子读取修复。414 收藏 -
Go go generate 的参数直接跟在生成命令后面,双引号可以保留带空格的单个参数,GOFILE 等自动变量适合减少硬编码。本文用 flag 和 -command 给出可维护的配置方法。414 收藏 -
Go 用 json.Decoder 读取请求体或消息流时,EOF 可能代表正常结束,也可能暴露出截断输入。本文用连续 JSON、空白和尾部脏数据三个例子,拆开判断方式并给出可复查的读取代码。413 收藏 -
Go 模块下载并不只是从代理拿一个 zip。本文从一次依赖校验异常出发,拆开 GOPROXY、go.sum、GOSUMDB、GOPRIVATE 的信任边界,给出公有依赖校验、私有模块配置和替换后复核的实战检查清单。413 收藏 -
用 Go 标准库 crypto/ecdh 完成一次可验收的密钥交换,说明公钥 Bytes 序列化、NewPublicKey 恢复、曲线匹配和共享密钥一致性检查。413 收藏