golang
已收录文章:1289篇
-
二级指针用于在函数内修改传入的指针变量本身,使其指向新地址,解决Go值传递导致的外部指针无法更新问题,如链表头节点修改;其核心是通过**T传递指针的地址,实现对原始指针的“回写”,但需避免过度使用,优先考虑返回值或引用类型等更Go风格的方式。132 收藏
-
基准测试用于量化性能,算法优化用于减少资源消耗;2.Go的Benchmark函数可测量代码性能;3.通过对比优化前后基准数据提升效率。132 收藏
-
使用sync.Mutex保护文件操作,确保同一时间只有一个goroutine执行写入;2.每个goroutine写独立临时文件后由主协程合并,提升并发性能;3.通过channel将写请求串行化处理,适合高频率日志场景;4.使用flock实现跨进程文件锁,防止多进程竞争。应根据共享范围、性能需求和复杂度选择合适方案,避免无保护的并发写入导致数据损坏。132 收藏
-
Go语言中encoding/csv包用于读写CSV文件,无需额外依赖。使用csv.NewReader可从文件等io.Reader源读取数据,ReadAll()适合小文件,大文件应逐行Read()避免内存溢出。csv.NewWriter写入数据时需调用Flush()确保写入磁盘。可通过设置Comma字段自定义分隔符如制表符或分号。该包自动处理含逗号、换行、引号的字段,解析和写入时会正确转义。常见操作包括跳过头部标题行:读取后忽略首条记录或单独读取header再循环剩余行。配合os、bufio使用可应对多数场132 收藏
-
goenv输出空白通常因环境变量未正确配置或安装问题导致。需检查Go是否安装成功,确认GOROOT、GOPATH和PATH环境变量设置正确,并确保安装目录有读取权限。在Linux/macOS中通过.bashrc或.zshrc配置,Windows中配置系统环境变量。若存在多版本冲突,使用whichgo确认路径。设置GOPATH后仍无法运行go命令,可能因$GOPATH/bin未加入PATH。GOROOT指向Go安装目录,GOPATH为工作区,两者需正确指向并加入PATH。Docker中输出空白需在Docke131 收藏
-
使用令牌桶算法实现API限流,通过golang.org/x/time/rate包创建每秒5次、突发10次的限流器,结合中间件封装和双检锁机制保障并发安全,基于客户端IP进行限流控制,并建议生产环境优化IP提取、增加Redis分布式支持及内存清理机制。131 收藏