golang
已收录文章:14425篇
-
init函数执行顺序由包导入关系和文件字典序决定:先执行被依赖包的init,再执行当前包的;同一包内按文件名字典序执行,如main.go早于util.go。136 收藏
-
Go语言通过import引入包,依赖由gomod自动管理。使用gomodinit初始化项目后,执行gobuild等命令会自动下载依赖并生成go.mod和go.sum文件;通过goget可升级或指定版本,gomodtidy清理未使用依赖,实现自动化、可重现的依赖管理。176 收藏
-
sort.Swapper是sort包提供的函数,利用反射为任意切片生成元素交换函数,适用于运行时类型不确定的排序或重排场景,如通用shuffle或reverse操作,无需泛型即可实现类型安全的动态切片处理。125 收藏
-
Go语言通过crypto/md5包实现MD5计算,适用于校验文件完整性等非安全场景;2.字符串计算需转换为字节切片并使用md5.Sum(),结果以16进制输出;3.文件计算应分块读取,结合os.Open、md5.New()和io.Copy避免内存溢出;4.MD5存在碰撞风险,不推荐用于安全敏感场景,建议改用SHA-256;5.可封装通用函数简化调用,Go哈希接口设计一致,便于迁移至其他算法。423 收藏
-
在Go项目中混合使用RPC和REST可兼顾性能与通用性,关键在于解耦通信层与业务层。通过共用service核心逻辑、分离接口实现双通道调用同一方法,确保逻辑变更同步生效;独立启动gRPC(:50051)和HTTP(:8080)服务,清晰划分内外调用边界;统一错误码映射与日志中间件,保证gRPC与REST错误处理一致性;为REST定义独立DTO避免直接暴露Protobuf结构,控制字段展示并适配命名规范;转换逻辑轻量化以减少性能损耗,最终让两种协议成为同一业务能力的互补窗口。290 收藏
-
答案:文章介绍了Go语言中网络请求的常见错误类型及重试机制实现方法。首先区分连接失败、HTTP状态码异常和读写错误,判断临时性与永久性错误以决定是否重试;接着给出带指数退避的重试函数示例,处理5xx、429等可重试情况;然后通过自定义RoundTripper实现透明重试,避免修改业务代码;最后强调非幂等请求慎用重试、设置合理超时、使用context控制超时、记录日志及结合熔断器等最佳实践,提升客户端健壮性。243 收藏