golang
已收录文章:494篇
-
识别Golang锁竞争需结合pprof、-race检测与经验观察;减少竞争可通过原子操作、channel通信、细粒度锁、读写锁、分段锁、Copy-on-Write及无锁数据结构等策略优化并发性能。499 收藏
-
答案是使用Go标准库可轻松实现支持GET和POST的JSONAPI。通过net/http注册路由,定义Data结构体,GET返回预设数据,POST解析请求体并回显,设置正确Content-Type头,最终用curl测试正常收发JSON。495 收藏
-
Go语言中regexp包支持正则表达式的编译、匹配、替换和提取操作,需先导入包并使用regexp.Compile或regexp.MustCompile编译正则表达式,后者适用于已知正确的正则,前者可处理错误,编译后可复用提高效率;常用方法包括Match判断匹配、FindString获取首个匹配、FindAllString获取全部匹配、FindStringSubmatch提取分组、ReplaceAllString替换匹配内容;语法基于RE2引擎,支持\d表示数字、\w表示字母数字下划线等,不支持后向引用但高494 收藏
-
使用OpenTelemetry实现Golang分布式追踪,需安装OTel依赖并初始化TracerProvider连接Jaeger;通过Tracer创建Span记录操作,跨服务时利用全局Propagator传递traceparent头;结合Gin/gRPC中间件自动追踪请求;最后通过JaegerUI查看调用链。491 收藏
-
最核心的方式是使用channel传递错误,通过创建error类型的channel,子goroutine将错误发送至channel,主goroutine接收并处理,结合sync.WaitGroup与channel关闭机制可实现多个goroutine的错误收集,确保并发安全与程序健壮性。491 收藏
-
Go语言的encoding/csv包提供内置CSV读写功能,无需外部依赖。使用csv.NewReader可从文件、字符串等io.Reader读取数据,ReadAll()一次性读取所有行,或用Read()逐行处理以节省内存。写入时通过csv.NewWriter将数据写入io.Writer,需调用Flush()确保数据落盘,或使用WriteAll()批量写入。该包自动处理含逗号、换行、引号的字段,支持自定义分隔符如分号或制表符,适用于大多数结构化数据处理场景。490 收藏