在Golang中,通常使用结构体来表示表单数据。假设您要提交一个包含字符串类型的数组的表单,可以定义以下结构体:

type Form struct {
    Data []string `form:"data[]"`

其中,form:"data[]"表示将表单中名为data的参数作为Data字段的值,[]表示这是一个数组类型。

  • 解析请求的表单数据
  • 您需要使用net/http包中的ParseForm方法来解析请求的表单数据。解析后,您可以从请求的表单数据中获取到定义的表单数据结构体。

    func postFormArray(w http.ResponseWriter, r *http.Request) {
        if err := r.ParseForm(); err != nil {
            http.Error(w, err.Error(), http.StatusBadRequest)
            return
        form := &Form{}
        if err := decoder.Decode(form, r.PostForm); err != nil {
            http.Error(w, err.Error(), http.StatusInternalServerError)
            return
        // 打印表单数据
        fmt.Println(form.Data)
    

    在上面的代码中,r.ParseForm()方法解析表单数据,decoder.Decode(form, r.PostForm)方法将解析的表单数据解码为定义的表单数据结构体。

  • 在客户端发送POST请求
  • 在客户端中,您需要使用url.Values类型来构造表单数据,并使用http.PostForm方法发送POST请求。

    func main() {
        data := []string{"apple", "banana", "cherry"}
        values := url.Values{}
        for _, d := range data {
            values.Add("data[]", d)
        _, err := http.PostForm("http://localhost:8080/post", values)
        if err != nil {
            fmt.Println(err)
            return
    

    在上面的代码中,url.Values类型表示表单数据,values.Add("data[]", d)方法将数组元素添加到表单数据中,http.PostForm方法发送POST请求。

    以上就是在Golang中使用POST请求提交表单数组的步骤。

  •