func HandleFunc简介
请看以下实例代码
package main
import "net/http"
func main(){
http.HandleFunc("/", hello)
http.ListenAndServe(":8080", nil)
}
func hello(w http.ResponseWriter, r *Request){
w.Write([]byte("hello!"))
}
http.HandleFunc("/", hello)创建了一个http的路由,URL是根路径,然后监听8080端口。
每次针对HTTP服务器根路径的一个新请求产生时,服务器将生成一个新的协程goroutine执行hello函数。
用go搭建一个简单的web服务器
例1:
package main
import (
"fmt"
"log"
"net/http"
"strings"
)
func sayhelloName(w http.ResponseWriter, r *http.Request) {
r.ParseForm()
fmt.Println(r.Form)
fmt.Println("path", r.URL.Path)
fmt.Println("scheme", r.URL.Scheme)
fmt.Println(r.Form["url_long"])
for k, v := range r.Form {
fmt.Println("key:", k)
fmt.Println("val:", strings.Join(v, ""))
}
fmt.Fprintf(w, "这是一个web服务器")
}
func main() {
http.HandleFunc("/", sayhelloName)
err := http.ListenAndServe(":9090", nil)
if err != nil {
log.Fatal("ListenAndServe:", err)
}
}
在终端启动后,然后再浏览器输入http://localhost:9090,则可以看到“这是一个web服务器”
例2:
我们更改一下代码,将main函数内的
http.HandleFunc("/", sayhelloName)
改成
http.HandleFunc("/test", sayhelloName)
在终端启动后,然后再浏览器输入http://localhost:9090/test,则可以看到“这是一个web服务器”。
若输入http://localhost:9090,则发生错误404。