Go语言技术文章
-
Go语言可通过runtime.Caller结合runtime.FuncForPC获取调用栈中任意层级的调用者信息,包括源文件路径、行号及函数全名,适用于日志追踪、调试辅助和自定义错误上下文等场景。427 收藏 -
pprof是Go程序CPU分析的唯一可靠入口,必须确保采样时间≥5秒、合理停用profile、适配容器CPU配额;分析时重点用web/peek/disasm三视图;优化需关注字符串拼接、map遍历、闭包逃逸等Go特性陷阱;非有效计算导致的高CPU应优先排查I/O等待或GC问题。427 收藏 -
Golang · Go问答 | 1个月前 | 并发 · channel · range · Close · Go问答 · 并发退出 Channel关闭 Go问答 close channel range退出 发送方关闭
Go channel 关闭后仍然可以把缓冲区里的值读完,再继续读取会得到元素类型的零值和 ok=false;但关闭后的 channel 不能再写入,也不能重复关闭。真正安全的关键是让发送方统一负责关闭,并让接收方用 range 或 ok 值退出。427 收藏 -
一个 Go REST API 如果让每个接口自由拼错误 JSON,客户端很快就会遇到无法判断、重复提示和误重试。本文用统一错误信封、稳定错误码和请求追踪字段,整理一套可兼容旧客户端的设计方式。427 收藏 -
列表接口从 page 改成 cursor 时,真正容易出问题的不是 SQL,而是参数语义、错误响应和旧客户端兼容。本文用 Go net/http 设计一个可灰度迁移的游标分页接口,给出返回结构、边界校验、错误码和回归检查。427 收藏 -
不需要安装Go运行时;Go编译默认静态链接,将运行时、GC、调度器和标准库全部打包进二进制文件,生成的可执行文件在匹配的操作系统和架构上可直接运行,仅启用CGO且调用系统C库时才可能引入额外动态依赖。426 收藏 -
在Go中无法直接将[]string类型切片强制转换为[]interface{},必须逐个元素赋值;本文详解原理、提供安全转换方案,并给出实用示例与关键注意事项。426 收藏 -
os.Remove删不掉文件报permissiondenied主因是Windows下文件被占用或权限不足、Linux/macOS下父目录无写权限;它仅删文件或空目录,而os.RemoveAll可递归删除整个目录树。426 收藏 -
不能,Go反射不支持自动类型推导转换;必须显式指定目标类型,否则Convert()或调用方法会panic;安全做法是类型断言处理已知类型,反射仅用于运行时类型不确定的场景如ORM、反序列化。426 收藏 -
通过接口和结构体定义错误类型,结合errors.As和错误包装,可构建可识别的Go错误分类体系。426 收藏 -
net.Conn不能直接复用,因其绑定唯一文件描述符和缓冲区,且不保证并发安全;并发读写会导致数据错乱或连接重置,须用“一连接一goroutine”模型并分离读写协程。425 收藏 -
使用fsnotify库实现Go文件监控,支持跨平台监听文件创建、写入、删除等操作;2.通过goget安装依赖并编写程序初始化Watcher,监听指定文件或目录事件。425 收藏 -
Gotest默认超时是10分钟,即整个gotest命令运行周期的上限,由-timeout参数控制,默认值为10m;该超时无法通过代码设置,也不作用于单个TestXxx函数。425 收藏 -
使用 block profile 和 runtime trace 定位 goroutine 阻塞、调度等待和吞吐问题。425 收藏 -
Golang · Go教程 | 2星期前 | 并发 · go · trace · 性能排查 · Go 1.25 · Go 1.25 runtime/trace FlightRecorder 运行时追踪 延迟排查
Go 1.25 的 runtime/trace.FlightRecorder 用内存环形缓冲持续保留最近一小段运行时追踪,等异常延迟发生时再写出文件。本文对比传统 Start/Stop 采集方式,给出 HTTP 服务接入、触发写盘和资源边界检查。425 收藏