Go问答技术文章
-
Go map 直接读取时,缺失键和真实的零值会得到同一个结果。本文用 ok 语法、comma-ok 判断和 nil map 示例,说明如何区分存在性、避免误判,并把判断边界写进函数接口。145 收藏 -
Golang · Go问答 | 2星期前 | 并发 · time · 定时任务 · Timer · Ticker · Go问答 · 定时器 Go 定时任务 停止 time.Ticker time.After time.NewTimer
Go 里一次性超时、可重置等待和周期任务分别适合 time.After、time.NewTimer 与 time.Ticker。本文用三个小场景对比它们的触发语义、停止方式、慢任务边界和 Go 1.23 定时器变化,给出可直接复用的选择规则。144 收藏 -
json.RawMessage 适合把 JSON 解码延后,但 MarshalJSON 与 UnmarshalJSON 的字节所有权规则不同。本文用最小代码说明何时会复制、何时只是复用已有字节,以及如何避免修改底层切片带来的隐蔽问题。143 收藏 -
Go channel 关闭后,接收方可以用 comma-ok 判断状态,也可以用 range 自动读到结束;真正容易出错的是发送方与关闭方的职责边界。本文用最小示例说明判断、排空和并发收尾的正确写法。142 收藏 -
Go 里用 sort.Slice 和 sort.SliceStable 排序时,真正容易忽略的是相等元素的顺序与 less 比较函数约束。本文用一组带优先级和序号的记录,演示两者差异、稳定排序的适用边界和可复查写法。142 收藏 -
Go 1.24 引入 encoding.TextAppender 和 BinaryAppender。本文从日志缓冲区场景出发,验证 AppendText 的追加语义、错误回退和分配边界。141 收藏 -
Golang · Go问答 | 19小时前 | golang · base64 · Go问答 · URL安全 · 令牌 · Go encoding/base64 RawURLEncoding NoPadding 令牌编码
RawURLEncoding 是 URL 安全且不带等号填充的 Base64 编码。本文用 Go 示例拆开编码选择、解码输入、Strict 校验和与标准编码互换时最容易踩到的边界。141 收藏 -
maps.Clone 能复制 Go 的 map 容器,但它只做浅拷贝:值是切片、map 或指针时,嵌套数据仍可能共享底层对象。本文用配置快照场景说明互相影响的原因、如何按层复制,以及什么时候不必做深拷贝。139 收藏 -
Go 的 []byte 传递经常隐藏底层数组共享。本文用 bytes.Clone 拆开切片别名与大数组内存保留两个问题,给出判断时机、基准验证和边界取舍。138 收藏 -
Go 的 io.Reader 读取循环里,io.EOF 通常表示输入已经结束,但 n 仍可能大于 0。本文用一个可复现的读取器说明短读、空读和 EOF 的处理顺序,避免丢掉最后一段数据或写出忙等循环。137 收藏 -
os.File.ReadFrom 不只是把 io.Reader 读进文件:它会先检查文件状态,再按平台选择专用路径或通用读取循环。本文用 io.Copy、文件偏移和短写场景说明如何判断结果。137 收藏 -
sort.Find 返回有序切片中满足比较条件的位置和命中状态,但 index 仍可能是插入点。本文用重复值、空切片和边界值示例说明 less 函数如何设计,以及如何区分找到元素和得到插入位置。134 收藏 -
bufio.Reader.Peek 适合查看缓冲区内的短前缀,不适合把整条未知长度消息一次性探出来。本文用 ErrBufferFull 解释边界,并给出切换 ReadBytes、ReadString 或按分隔符流式消费的判断方法。134 收藏 -
sync.Once 只保证初始化逻辑最多执行一次,失败也不会自动重试。通过区分一次性成功初始化、可重试初始化和启动失败退出,避免把错误状态永久缓存进服务进程。133 收藏 -
Golang · Go问答 | 1天前 | 并发 · golang · 错误处理 · Go问答 · Go 1.25 · WaitGroup 并发任务 Go 1.25 sync.WaitGroup.Go 错误回传
sync.WaitGroup.Go 负责启动任务并等待全部任务结束,但它不会替调用方收集 error。本文用带缓冲结果通道把失败传回主流程,拆开并发收口、首错处理、panic 边界和主 goroutine 的退出时机。133 收藏