已关闭此问题为not reproducible or was caused by typos。它目前不接受回答。
此问题是由打印错误或无法再重现的问题引起的。虽然类似的问题可能是on-topic在这里,这一个是解决的方式不太可能帮助未来的读者。
29天前关闭
Improve this question
在Golang中,为什么url.Values使用字符串slice作为值:
type Values map[string][]string
而不是单个字符串:
type Values map[string]string
使用单字符串不是更简单吗?在这方面是否有更多的考虑?
1条答案
按热度按时间hi3rlvi21#
类型
url.Values
表示查询中使用的一个 common syntax。这个约定的问题在于它从来没有完全形式化为一个规范。RFC 1738中的“统一资源定位符(URL)”在“HTTP”子节3.3中没有提及。“URI通用语法”RFC 3986指出“......因为查询组件通常用于以“key=value”的形式携带标识信息......”这几乎没有任何意义。“HTTP/1.1”RFC 2616和后续完全跳过了这个主题。
因此,查询参数使用多个值,甚至根本没有值,即
?a&b=1&c=2&c=3
被大多数人容忍。Go语言的
Get gets the first value associated with the given key.
可能会导致复杂的行为,有利于更可读的代码。出于安全性和可靠性的考虑,我建议为多个值触发一个错误案例。如果您确实需要一行程序,那么至少在url.Values
x 1 m5n1x上执行strings.Join(q[key], "")
,以获得一些一致的结果。