
指针
Go中结构体默认浅拷贝,赋值时基本类型字段独立,但slice、map、指针、chan、func和interface{}字段共享底层数据;深拷贝需手动实现Clone方法或谨慎使用序列化。
nil仅是六类引用类型的零值,非所有类型都支持nil比较;判断“空”需按类型区分,初始化方式决定nil或非nil状态,方法调用是否panic取决于是否解引用nil接收者。
空类大小为1字节,因C++标准要求对象有唯一地址,编译器隐式插入char确保sizeof至少为1;验证应直接用sizeof,不可依赖地址差值。
deepCopy函数需分别处理指针、切片、映射和接口类型:指针需解引用后递归拷贝并新建指针;切片需创建新底层数组并逐元素拷贝;映射需新建并逐键值对递归拷贝;接口需先Elem()获取内部值,再判空避免p...
WaitGroup是用于等待多个goroutine完成的同步原语,必须在启动goroutine前调用Add(),goroutine内用deferwg.Done(),主线程调用Wait();不可复制、需...
strtok不能保留空段且无法区分分隔符语义,因其将分隔符集合视为等价并自动跳过连续分隔符间的空字符串;需用find_first_of手动切片、strtok_r线程安全替代或regex处理复杂规则。
clear()不释放vector的元素内存,仅销毁元素并置size()为0,capacity()不变;需shrink_to_fit()或swap(std::vector())才能真正释放内存。
错误分支测试需用errors.New/fmt.Errorf创建具名错误变量,通过errors.Is/errors.As精确断言;mock依赖时主动注入预设错误;注意defer中Close等可能出错的调...
Go语言反射不直接参与RPC通信,仅被net/rpc等框架内部用于服务注册、方法查找和参数编解码;需满足导出方法、正确签名及字段导出等约束,否则调用时panic或静默失败。
在Go中,defer不应在资源获取函数(如getConnection)内部调用Close(),而应由调用方在获得返回的*os.File后立即deferf.Close(),以确保资源在作用域结束前被安全...