当前位置: > > > > 避免需要冗余检查来映射给定的字符串零值?
来源:stackoverflow
2024-04-29 09:42:35
0浏览
收藏
亲爱的编程学习爱好者,如果你点开了这篇文章,说明你对《避免需要冗余检查来映射给定的字符串零值?》很感兴趣。本篇文章就来给大家详细解析一下,主要介绍一下,希望所有认真读完的童鞋们,都有实质性的提高。
问题内容
我们有一个 map[string]string
,我假设这意味着从地图中检索到的字符串的零值是 ""
这是否意味着:
var userid, ok = params["user_id"]; if !ok || userid == "" { return 422, "missing user_id in request" }
与此相同的逻辑:
var userId = params["user_id"]; if userId == "" { return 422, "Missing user_id in request" }
只是确保我的理解是正确的。
解决方案
如果您打算存储值类型的零值,情况就不一样了。
请参阅此示例:
m := map[string]string{ "empty": "", } if v, ok := m["empty"]; ok { fmt.printf("'empty' is present: %q\n", v) } else { fmt.println("'empty' is not present") } if v, ok := m["missing"]; ok { fmt.printf("'missing' is present: %q\n", v) } else { fmt.printf("'missing' is not present") }
它输出(在上尝试):
'empty' is present: "" 'missing' is not present
确实,如果您从不在映射中存储零值,则可以简单地使用 if m[value] == zerovalue {}
。详细信息请参见:
可以利用地图的这种“属性”来优雅地创建集合。查看
使用这种“技术”还有另一个优点:您可以以紧凑的方式检查多个键是否存在(您不能使用特殊的“comma ok”形式来做到这一点)。更多信息:
文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《避免需要冗余检查来映射给定的字符串零值?》文章吧,也可关注公众号了解相关技术文章。