Loading... ```golang fields := map[string]interface{}{ "country_id": in.CountryId, "is_system_required": in.IsSystemRequired, "is_user_edit": in.IsUserEdit, "is_required": in.IsRequired, } // 遍历映射,添加非SELECT_ALL的条件 for field, value := range fields { fmt.Printf("字段: %s, 值: %v, 类型: %T, SELECT_ALL: %v, 类型: %T\n", field, value, value, model.SELECT_ALL, model.SELECT_ALL) if value != model.SELECT_ALL { fmt.Printf("添加条件: %s = %v\n", field, value) addCondition(squirrel.Eq{field: value}) } } ``` > 问题 看上来这段代码人畜无害,实际上暗藏玄机 > `const SELECT_ALL = -1` select_all在其它地方是这样定义的 这段代码跑起来一直出问题 `if value != model.SELECT_ALL {` 无论是什么情况都一直为`true` 检查一遍发现 interface{} 给我转换成int了默认 而`model.SELECT_ALL` 是int64 所以给改成这样就好了 ```golang // interface 改成 int64 fields := map[string]int64{ "country_id": in.CountryId, "is_system_required": in.IsSystemRequired, "is_user_edit": in.IsUserEdit, "is_required": in.IsRequired, } ``` 最后修改:2024 年 11 月 21 日 © 允许规范转载 打赏 赞赏作者 微信 赞 0 如果觉得我的文章对你有用,请随意赞赏