
结构体
WaitGroup.Add()必须在启动goroutine前调用,若在goroutine内部调用会导致漏计数;正确做法是循环中先wg.Add(1),再gofunc()。
Go反射开销巨大:reflect.Value.Call比直接调用慢50–100倍,FieldByName慢30–60倍;因需查类型哈希表、interface{}装箱、堆分配及构造reflect.Val...
在Go中,对interface{}类型切片中的结构体进行值类型赋值(如b.Value=42)仅修改局部副本,需显式回写到原切片位置才能生效。
C++函数不能直接导出为CAPI,因namemangling导致符号不一致,且C++特性(如类、模板、STL)破坏CABI稳定性;必须用opaquepointer、extern"C"...
fmt.Errorf默认不支持错误嵌套,需用%w动词才能正确包装错误;自定义错误类型须实现Unwrap()方法以支持错误链穿透,否则丢失可判定性。
最简方式是直接调用http.ListenAndServe(":8080",nil),它内置于net/http标准库,零配置即可启动HTTP服务,但必须检查错误以避免端口占用等导致静...
Go程序启动错误无法通过main()返回值捕获,必须在main()内显式处理;init()中panic会立即终止程序;os.Exit()跳过defer导致资源泄漏;第三方库init()需主动验证。
伪共享是多个CPU核心因访问同一缓存行中不同变量而触发频繁缓存失效,导致性能下降;在C++中常暴露于未对齐的atomic变量共处一缓存行时,需用alignas(64)加填充确保单变量独占缓存行。
Go并发测试核心是暴露竞态并验证同步机制,需用-race检测数据竞争、channel/WaitGroup控制执行节奏、模拟高并发与边界条件,并用子测试隔离不同同步策略。
泛型解决编译期类型复用,反射解决运行时类型未知;泛型零开销但无法处理字段级动态操作,反射灵活却有性能损耗和panic风险,二者分层协作而非替代。