如题。对Go的网页请求参数有一些了解,从头开始呗。
数据库的goods表
package main import ( "fmt" "log" "net/http" "strconv" "database/sql" _ "github.com/go-sql-driver/mysql" ) func AddHandler(w http.ResponseWriter, r *http.Request) { vars := r.URL.Query() a := vars.Get("para") b := vars.Get("para2") inta, _ := strconv.Atoi(a) intb, _ := strconv.Atoi(b) fmt.Println(r.Method, r.URL, r.Host, vars) fmt.Println(r.Proto) fmt.Fprintln(w, inta+intb) } type Good struct { Name string Count string Price string } func CheckErr(err error, paras ...string) { if err != nil { for _, val := range paras { log.Println(val) } log.Fatal(err) } } func main() { db, _ := sql.Open("mysql", "root:pwd@(127.0.0.1:3306)/mysql") defer db.Close() err := db.Ping() CheckErr(err, "SQLErr") log.Println("Success") query := "select * from goods" rows, _ := db.Query(query) var id, name, count, price string var nameCount map[string] int nameCount = make(map[string]int) for rows.Next() { rows.Scan(&id, &name, &count, &price) _count, err := strconv.Atoi(count) CheckErr(err, id, name, count, price) _, ok := nameCount[name] if (ok) { nameCount[name] += _count } else { nameCount[name] = _count } } for k, v := range nameCount { fmt.Println(k, v) } http.HandleFunc("/", AddHandler) log.Println("Listen : 15233") err = http.ListenAndServe("0.0.0.0:15233", nil) CheckErr(err, "ListenErr") fmt.Println("Start open") }
运行命令: go run test.go
浏览器地址输入 localhost:15233。