
指针
必须用指针接收者:修改字段、大结构体、实现接口、统一风格——语义上表示“方法会改变接收者”,避免副本无效修改与接口实现失败。
expired()仅检测对象是否销毁,不能判断weak_ptr是否为空;空weak_ptr和指向已销毁对象的weak_ptr均返回true,但原因不同:前者无控制块,后者共享引用计数为零。
std::initializer_list是轻量只读视图,不拥有元素,仅包装栈或静态存储的连续内存;其生命周期依赖初始化表达式,返回局部花括号列表会导致悬空指针,且元素类型必须一致、只读不可修改。
Go语言反射不直接参与RPC通信,仅被net/rpc等框架内部用于服务注册、方法查找和参数编解码;需满足导出方法、正确签名及字段导出等约束,否则调用时panic或静默失败。
deepCopy函数需分别处理指针、切片、映射和接口类型:指针需解引用后递归拷贝并新建指针;切片需创建新底层数组并逐元素拷贝;映射需新建并逐键值对递归拷贝;接口需先Elem()获取内部值,再判空避免p...
WaitGroup是用于等待多个goroutine完成的同步原语,必须在启动goroutine前调用Add(),goroutine内用deferwg.Done(),主线程调用Wait();不可复制、需...
用hasArgument(0,expr(hasType(qualType(hasCanonicalType(pointerType())))).bind("arg"))捕获裸指针实...
享元对象必须不可变以确保共享安全,Go中需通过设计约束实现:字段导出但无setter、构造时传值不传引用、可变类型深拷贝;工厂用mutex保护map实现线程安全池化;严格区分内在与外在状态;小对象池化...
用sync.Pool复用对象可显著降低GC压力,适用于创建开销大、生命周期短、可重置的无状态对象,需手动Reset并提供fallback创建逻辑,且不可依赖必然命中。
decltype严格按表达式语法形式推导类型,不求值、保留引用和const;标识符取声明类型,其他表达式按值类别加&或&&;常用于尾置返回类型推导,与auto有本质区别。