Go语言技术文章
-
Golang · Go教程 | 3星期前 | errgroup · Context · Go教程 · 后端工程 · Golang实战 · 并发治理 · golang Go 并发编程 错误处理 context errgroup 后端工程 生产实践 SetLimit
从批量调用下游接口的并发扇出场景出发,讲清 errgroup.WithContext、Go、Wait、SetLimit、TryGo、错误传播、Context 取消和结果聚合的生产写法。197 收藏 -
本文用一个 Go HTTP 接口示例,把 log/slog 的 JSONHandler、Logger.With、请求字段和本地检查串起来,说明如何把普通日志变成可检索、可过滤、可定位的结构化日志。194 收藏 -
runtime.Goexit仅用于goroutine内主动退出且不执行defer;runtime.Gosched是让出P的时间片而非挂起goroutine,不可替代sleep。193 收藏 -
本文详解Go服务端如何区分并正确解析浏览器提交的application/x-www-form-urlencoded表单数据和工具发起的application/json请求,避免因Content-Type不匹配导致的解码失败。193 收藏 -
Go1.6的goinstall命令在交叉编译时会自动将二进制文件放入$GOPATH/bin/<os>_<arch>/子目录(如linux_386),无法通过内置参数更改;需改用gobuild-o显式指定输出路径,实现跨平台编译与本地编译统一部署到$GOPATH/bin/。Go1.6的`goinstall`命令在交叉编译时会自动将二进制文件放入`$GOPATH/bin/_/`子目录(如`lin193 收藏 -
用sync.WaitGroup等待goroutine完成:Add(1)必须在go前调用,Done()推荐defer调用;需多个goroutine但只取首个结果时,用select监听同类型channel实现“firstresultwins”。191 收藏 -
“boundscheckfailed”表示编译器在SSA阶段无法静态证明索引安全而保守插入边界检查,并非实际越界;常见于变量索引、动态切片长度或跨函数传参后直接下标访问;应通过显式切片截断(如s[:n])、len()断言或range循环等方式提供可证明的安全依据。185 收藏 -
Golang · Go教程 | 3星期前 | 并发编程 · CI · Go教程 · Go1.25 · 代码质量 · golang Go WaitGroup Go1.25 go vet HostPort
围绕 Go 1.25 新增的 go vet waitgroup 和 hostport 检查,讲清 WaitGroup.Add 位置、IPv6 地址拼接、CI 门禁、误报处理和团队落地规范。185 收藏 -
正确关闭channel需等待所有生产者退出,否则向已关闭channel发送数据会panic;多channel接收应结合select与done信号避免阻塞。184 收藏 -
sysmon是Go运行时中不依赖P、独立运行于M上的后台监控协程,负责轮询检查网络事件、抢占长时间运行的G、触发GC及回收空闲P等,但不直接唤醒M——它仅通过notewakeup等机制通知调度器,由OS系统调用最终完成唤醒。184 收藏 -
Golang · Go教程 | 3星期前 | web安全 · Go教程 · 后端工程 · Golang实战 · net/http · CSRF · golang 安全 Go net/http HTTP服务 csrf Go1.25 CrossOriginProtection
从后台接口 CSRF 风险出发,讲清 Go 1.25 net/http CrossOriginProtection 的判断逻辑、可信 Origin、拒绝日志、绕过白名单风险、预发测试和上线检查。183 收藏 -
通过有界 channel、select 和 context,把压力显式传回生产端。183 收藏 -
理解 Allow、Wait、Reserve 和 Burst 的区别,给接口加上可解释的限流策略。181 收藏 -
答案:Go语言通过reflect包实现通用打印函数,支持任意类型数据的格式化输出,适用于调试和日志场景。函数利用reflect.TypeOf和reflect.ValueOf获取类型与值信息,通过Kind判断基础类型、结构体、切片、数组、map等,结合递归与缩进清晰输出嵌套结构,可处理指针解引用、nil值及字段遍历,相比fmt.Printf更灵活定制,但需注意未导出字段和边界情况处理。177 收藏 -
Go反射禁止访问私有字段:Interface()读未导出字段会panic,因CanInterface()恒为false;唯一例外是unsafe但破坏类型安全且有悬垂指针风险;应改用导出字段或getter方法。177 收藏