golang
已收录文章:14089篇
-
类型断言用于检查接口变量的实际类型并获取值,语法为x.(T),可返回值和布尔标志避免panic;类型转换则通过T(x)显式转换类型,适用于数值、字符串等。1.类型断言常用于处理配置、数据库等接口数据;2.类型转换多用于数值运算或字符串与基本类型间转换;3.使用switch结合类型断言可安全处理多种类型;4.自定义类型同样支持类型断言与转换,规则一致。250 收藏
-
Go的http.Client默认自动跟随重定向,最多10次;可通过自定义CheckRedirect函数禁用或控制重定向行为,如返回http.ErrUseLastResponse禁止、限制次数或拦截特定域名,via参数记录请求链,精细管理跳转逻辑。403 收藏
-
defer用于延迟执行函数,确保资源如文件、网络连接等被安全释放,遵循后进先出原则,在函数退出前自动调用,提升程序健壮性。332 收藏
-
Go语言虽有垃圾回收机制,但不当编码仍致内存泄漏;2.避免全局变量长期持有大对象引用,宜用sync.Map或缓存库管理生命周期;3.及时关闭文件、网络连接等非GC资源,defer释放并停止timer;4.确保goroutine有退出机制,用context控制超时与取消,防通道阻塞导致泄漏;5.切片截取后可能保留原数组内存,应复制数据断开关联;6.缓存中指针需及时清理失效对象,用pprof分析堆内存;7.规范编码、合理管理资源、结合工具检测可有效降低内存泄漏风险。290 收藏
-
Memento模式通过封装对象状态实现撤销功能,文中以Go语言文本编辑器为例,展示Originator(编辑器)、Memento(状态快照)和Caretaker(历史管理)的协作,支持安全的状态回滚与恢复。223 收藏
-
自定义错误类型只要实现Error()string方法即可满足error接口,能与标准库无缝交互。例如定义MyError结构体并实现Error方法后,可直接返回为error类型,被fmt.Errorf、log.Println等函数正确处理,且支持errors.As提取具体类型和errors.Is判断错误条件,推荐为结构体指针并实现Is方法以增强兼容性。304 收藏