-
CRD的Go结构体需JSON/YAML标签、validation注释、scheme注册三者严格对齐:字段须用指针+omitempty标签;嵌套结构需显式json标签;切片需json:"items,omitempty";validation注释类型名须匹配OpenAPIv3(如integer非int);spec.versions必须为数组且仅一个storage:true;AddToScheme顺序不可错。
-
反射获取切片元素类型须调用t.Elem();匿名字段需手动递归处理;未导出字段调Interface()会panic;[]MyType不可Convert为[]interface{},需逐个Set;所有操作均需检查导出性、可设置性等安全条件。
-
cache.Get()未命中时需手动实现Read-Through:先查缓存,未命中则加锁/用singleflight防击穿,双检后回源DB并写入缓存,不可依赖库自动回源。
-
Go里&&真会短路,但别靠它写副作用逻辑Go的&&确实短路:左边为false时,右边表达式根本不会执行。这是语言规范保证的行为,不是优化技巧,而是语义本身。常见错误是把err!=nil&&handleError(err)这类写法当“安全兜底”,结果handleError带状态修改(比如记录日志、发告警),一旦左边为false,这些操作就静默丢失——因为压根没调用。只在右边是纯判断(如ptr!=nil&&ptr.field>0)或无副作用函数(如isValid(x)&&isI