私は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 でのこれの慣用的な実装は何でしょうか?
ありがとう。