
值类型
值接收者无法修改原结构体,指针接收者才能真正修改;小结构体(24字节)优先值接收者以提升性能与安全,大结构体或需修改状态时必须用指针接收者。
MethodInfo.Invoke是高并发下的主要性能瓶颈,因其触发完整反射解析流程、引发高频堆分配与GC压力;推荐用Delegate.CreateDelegate或Expression.Compil...
必须用指针传参:结构体含slice/map/chan/interface{}字段、含sync.Mutex等非可复制字段、需修改字段或并发共享;小结构体(16字节)传值更高效。
std::error_code比throw更轻量,适合高频预期错误;它是值类型、零开销、无RTTI/堆分配、支持多错误域和跨平台语义归一,需谨慎设计error_category边界。
Go内联由编译器自动决策,满足小函数(AST节点80)、无闭包/递归/defer/select、无逃逸、调用深度2等条件才可能被内联;//go:inline无效,-gcflags="-m&q...
Go类型推断仅在“:=”声明且左侧至少一个新变量时触发,依据右侧字面量或函数签名静态推导唯一类型;var+=非法,泛型调用另有独立推断机制。
operator+可定义为成员函数或友元函数:仅支持MyClass+MyClass时用const成员函数;需支持int+MyClass时必须用友元函数。应返回MyClass值类型,参数用const引用...
Go几乎不支持隐式类型转换,仅允许无类型常量赋值、接口实现赋值和方法调用隐式解引用三种特例;数值类型间运算必须显式转换,如int16(a)+b,字符串与数字、不同切片类型间均不支持隐式转换。
Go中接口的实现是隐式的,只有当变量被显式声明为接口类型并赋值时,编译器才会检查底层类型是否满足该接口;若仅定义了接口而未发生接口类型赋值,缺失方法不会触发编译错误。
Go中指针变量本身不参与GC决策,真正影响GC的是值的可达性:GC只根据对象是否能从根(如栈变量、全局变量)通过指针链访问来决定回收,与变量声明为*T还是T无关。