我对 Go 很陌生,所以如果这是一个微不足道的问题,我深表歉意。
我目前正在尝试编写一个函数来创建一个带有嵌套参数哈希的 POST 请求。因此,动态语言(如 javascript)中的等效调用将是:
$.post('http://example.com', {level1: {level2: 'foo'}});
在我的 Go 代码中,我目前有以下方式嵌套的哈希:
func (runner *Runner) post(args... interface{}) interface{} {
form_url := getString(args[0])
form_data := ???
http.PostForm(form_url, form_data)
表单数据(interface{})的实际类型由第三方库提供,因此我无法真正更改它。
问题是 PostForm 需要一个 url.Values 类型的表单数据,它被定义为
type Values map[string][]string
处理这个最好的方法是什么?到目前为止,我的结论是我需要编写一个函数来对嵌套哈希进行 HTTP 编码并具有以下签名:
func httpEncodeNestedMap(data interface{}) map[string][]string {...}
这在 Go 中的惯用实现是什么?
谢谢。