引言:需求场景分析 老板要求创建一个函数,每次调用使变量减一。 常见错误方案 // 全局变量方案(存在并发安全问题) var sum = 100 func main() { sum-- fmt.Println(sum) } // 文件存储方案(效率低下) package main
核心概念 反射 (Reflection) 允许运行时动态查询和操作对象的类型和值 通过 reflect.TypeOf 和 reflect.ValueOf 获取类型和值信息 提供运行时动态获取类型和修改值的能力 灵活性高但性能较低 类型断言 (Type Assertion)
封装:控制数据访问权限 package main import "fmt" type Person struct { name string // 私有字段 Age int // 公有字段 } // 设置私有字段的方法 func (p *Person) SetName(
基本概念 defer是Go语言中的一个关键字,作用在函数作用域中,用于在函数结束之前执行特定代码逻辑。 核心特性 1. 多个defer的执行顺序 多个defer之间采用栈结构(FILO):先进后出
概述 栈的作用域是函数,当函数执行结束后,栈的内存会被销毁。堆的作用域通常是跨函数的。当一个变量在函数外部被引用时,需要把变量转移到堆上,我们称之为逃逸。 在 Go 语言中访问引用对象时,实际上是通过指针间接访问。如果再访问里面的引用成员,往往会造成二次访问,这种操作容易导致不必要的逃逸现象。因此在
核心思想 保证一个类永远只能有一个对象、且该对象的功能依然能被其他模块使用 单例模式的逻辑推演 package main import "fmt" /* 三个要点: 1.某个类只能有一个实例; 2.它须自行创建这个实例; 3.它须自行向整个系统提供这个实例。 保证一个类永远只能有