为了账号安全,请及时绑定邮箱和手机立即绑定

golang地图对比:部分匹配

golang地图对比:部分匹配

Go
jeck猫 2021-08-16 15:47:47
我希望将收到的 HTTP 请求标头与作为结构一部分存储的预期标头映射进行比较:type Request struct {    URI    string    Method string    Headers map[string]interface{}}我需要确保传入请求中存在结构中定义的标头。我不在乎是否有我不期望的额外标头,但存储在结构中的所有标头都必须存在。是否有用于确定地图中的所有项目是否存在于另一个地图中的 golang 约定?一些示例数据:{  "expected_headers": {    "Content-Type": ["application/json"],    "Accept-Encoding": ["gzip, deflate"]  },  "received_headers": {    "Content-Type": ["application/json"],    "Accept-Encoding": ["gzip, deflate"],    "Accept": ["application/json"]}这是一个正面的例子:即,如果接收到的标头中存在预期的标头,则测试结果应该为 True。我知道我可以遍历所期望的头文件集并在接收的头文件中查找它们中的每一个。但是,我希望有一种更优雅的方式来完成同样的事情。根据评论,我添加了我的解决方案。我坦率地承认,我是 Go 的新手(尽管几十年来我一直在用多种不同的语言进行编码)。我的解决方案对我来说似乎并不优雅。欢迎更好的解决方案!func contains(theSlice []string, theValue string) bool {    for _, value := range theSlice {        if value == theValue {            return true        }    }    return false}func slicesMatch(slice1 []string, slice2 []string) bool {    for _, value := range slice1 {        if !(contains(slice2, value)) {            return false        }    }    return true}func headersMatch(expected map[string][]string, actual http.Header) bool {    for key, value := range expected {        if !(slicesMatch(value, actual[key])) {            return false        }    }    return true}
查看完整描述

1 回答

?
函数式编程

TA贡献1807条经验 获得超9个赞

是否有用于确定地图中的所有项目是否存在于另一个地图中的 golang 约定?

不,没有。您将不得不循环并一次检查一个。



查看完整回答
反对 回复 2021-08-16
  • 1 回答
  • 0 关注
  • 156 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信