以下代码工作正常var requestMap map[string]interface{}for _, value := range requestMap { switch v := value.(type) { case []interface{}: if len(v) == 0 { // if is empty then no need to throw NA return http.StatusOK, nil } case string: if len(v) == 0 { // if is empty then no need to throw NA return http.StatusOK, nil } }}但是下面的代码给出了invalid argument for len function,我已经阅读了这个问题var requestMap map[string]interface{}for _, value := range requestMap { switch v := value.(type) { case []interface{}, string: if len(v) == 0 { // if is empty then no need to throw NA return http.StatusOK, nil } }}这个 case 语句不足以识别[]interface{}或string作为值类型吗?为什么它仍在考虑interface{}作为参数len()
2 回答
holdtom
TA贡献1805条经验 获得超10个赞
这是因为在类型切换的情况下,v
应同时转换为接口 ( )[]interface
和 astring
的一部分。编译器无法决定使用哪个,因此它会将值还原为,因为它可以是任何值。interface{}
- 2 回答
- 0 关注
- 77 浏览
添加回答
举报
0/150
提交
取消