golang
已收录文章:470篇
-
Go虽有垃圾回收,但仍可能发生内存泄漏。常见场景包括goroutine泄漏、全局变量持续引用、未停止的Timer或Ticker、context使用不当及切片截取导致的大数组无法释放。可通过引入net/http/pprof启动HTTP服务暴露诊断接口,利用gotoolpprof分析heap和goroutine状态,查看内存占用top项或生成可视化图谱,对比不同时间点的堆快照以识别内存增长趋势。定期打印runtime.NumGoroutine()并检查pprof中阻塞在chanreceive等状态的gorou412 收藏
-
Go语言通过接口与高阶函数实现装饰器模式,可动态扩展功能。1.使用接口和结构体组合包装对象,如LoggingProcessor为DataProcessor添加日志;2.利用高阶函数实现函数级装饰,如WithTiming和WithValidation链式增强HandlerFunc;适用于日志、权限、缓存等场景,建议保持装饰器单一职责,避免嵌套过深与性能损耗。411 收藏
-
Go语言time包通过“2006-01-0215:04:05”布局格式实现时间格式化与解析,使用Format方法格式化时间,Parse解析字符串为时间,Sub计算时间差,Add进行时间加减,支持多种预定义格式和Duration单位操作,适用于日志记录、耗时统计等场景。409 收藏
-
Go语言通过reflect包可模拟方法重载,利用类型信息动态调用函数。首先创建Overloader结构体并注册不同参数类型的函数,键为“函数名_类型”格式;调用时根据参数类型查找对应函数执行。示例中Print函数对int和string分别处理,实现类似重载效果。但存在性能开销、运行时错误及可读性差等问题,建议仅在必要时使用。409 收藏
-
Go语言中接口通过隐式实现方法签名来定义行为,无需显式声明。例如Animal接口包含Speak()和Move()方法,只要类型如Dog实现了这两个方法,就自动满足该接口,可通过接口变量调用对应方法,支持多态与组合设计。408 收藏
-
Go模块缓存默认位于GOMODCACHE(如$HOME/go/pkg/mod),而非GOPATH/pkg;GOCACHE存放编译中间产物;清理用goclean-modcache,查询用golist-m。408 收藏