当前位置: > > > > 避免需要冗余检查来映射给定的字符串零值?
避免需要冗余检查来映射给定的字符串零值?
来源: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”形式来做到这一点)。更多信息:
文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《避免需要冗余检查来映射给定的字符串零值?》文章吧,也可关注米云公众号了解相关技术文章。
