获取参数

GETPOSTr.Form.Get("参数名")r.PostForm.Get("参数名")HTTPnet/httprequest.go
type Request struct {
	Body 			io.ReadCloser
    Form 			url.Values  
    PostForm 		url.Values
    MultipartForm 	*multipart.Form
}
BodyParseForm()ParseMultipartForm()
ParseFormURLPOSTPUTPATCHr.PostFormr.Formbodyr.FormURLHTTPContent-Typeapplication/x-www-form-urlencodedbodyr.PostFormbody10MBParseMultipartFormenctypemultipart/form-datafunc (r *Request) ParseMultipartForm(maxMemory int64) errorParseMultipartFormmaxMemorymaxMemory

直接解析到struct

ioutil.ReadAll(r.Body)bodystructtagbodystructstructformtagformnametagformform-

完整代码

main.go

package main

import (
	"net/http"
	"fmt"
	"io/ioutil"
	"encoding/json"
	"html/template"
)

type Test struct {
	NickName string `json:"nickname"`
	Phone    string `json:"phone"`
	PassWord string `json:"password"`
}

func main() {
	http.HandleFunc("/test", testFunc)
	http.HandleFunc("/testdata", testData)
	http.ListenAndServe(":8000", nil)
}

func testFunc(w http.ResponseWriter, r *http.Request) {
	t, _ := template.ParseFiles("templates/test.html")
	t.Execute(w, nil)
}

func testData(w http.ResponseWriter, r *http.Request) {
	var test Test
	r.ParseForm()
	test.NickName = r.Form.Get("nickname")
	if test.NickName == "" {
		data, err := ioutil.ReadAll(r.Body)
		if err != nil {
			fmt.Println(err)
			return
		}
		err = json.Unmarshal(data, &test)
		if err != nil {
			fmt.Println(err)
			return
		}
		fmt.Fprintf(w, "====>%s %s %s", test.NickName, test.Phone, test.PassWord)
	} else {
		test.Phone = r.Form.Get("phone")
		test.PassWord = r.Form.Get("password")
		fmt.Fprintf(w, "%s %s %s", test.NickName, test.Phone, test.PassWord)
	}
}

test.html

<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>test</title>
</head>
<body>
<form action="/testdata" method="post">
    NickName:<br>
    <input type="text" name="nickname" value="请输入昵称">
    <br>
    Phone:<br>
    <input type="text" name="phone" value="请输入手机号">
    <br>
    PassWord:<br>
    <input type="text" name="password" value="请输入密码">
    <br><br>
    <input type="submit" value="submit">
</form>
</body>
</html>