golang
已收录文章:673篇
-
调用外部API时需处理网络错误、HTTP状态码异常和响应解析失败,使用http.Client注意检查StatusCode,封装自定义APIError类型便于错误分类,设置超时与重试机制避免阻塞,结合结构化日志与监控提升可观测性。366 收藏
-
Go语言通过流式处理实现大文件上传,避免内存溢出。首先前端设置enctype="multipart/form-data",后端调用r.ParseMultipartForm(maxMemory)解析请求,maxMemory仅控制表单字段内存使用,文件部分自动写入临时文件。获取文件句柄后,使用file.Open()得到multipart.File(实现io.Reader接口),再通过io.Copy或分块读取(如32KB缓冲区循环read/write)将数据写入目标文件。关键在于避免一次性加载整个文件,采用固定366 收藏
-
正确设置GOPROXY可提升Go模块下载速度,推荐国内用户使用https://goproxy.cn,direct,并通过goenv命令验证配置生效。366 收藏
-
Go语言的encoding/csv包提供内置CSV读写功能,无需外部依赖。使用csv.NewReader可从文件、字符串等io.Reader读取数据,ReadAll()一次性读取所有行,或用Read()逐行处理以节省内存。写入时通过csv.NewWriter将数据写入io.Writer,需调用Flush()确保数据落盘,或使用WriteAll()批量写入。该包自动处理含逗号、换行、引号的字段,支持自定义分隔符如分号或制表符,适用于大多数结构化数据处理场景。366 收藏
-
使用strings.Builder可高效拼接字符串,避免+操作符导致的频繁内存分配。它通过可变缓冲区累积内容,支持WriteString、WriteByte等方法,最后调用String()获取结果,性能优于O(n²)的+拼接,适用于日志、HTTP响应等场景。365 收藏
-
Golang的select语句用于协调多个channel通信,能同时监听多个channel并处理就绪事件,结合goroutine可高效处理并发任务。示例中通过select监听网络事件和超时,避免阻塞;使用defaultcase可防止死锁,但需注意CPU占用;通过time.After实现超时控制;还可应用于多channel关闭检测、任务调度等并发场景。365 收藏