本章通过编写功能逐渐复杂的 web 服务器来让开发者对如何运用 go 语言有一个初步的了解。web 服务的地址 http://localhost:8000。
package main
import (
"fmt"
"log"
"net/http"
)
func main() {
http.HandleFunc("/", handler) //用handler函数处理根路由下的每个请求
log.Fatal(http.ListenAndServe("localhost:8000", nil))
}
// 将访问的路径返回到页面
func handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "URL.Path = %q\n", r.URL.Path)
}
package main
import (
"fmt"
"log"
"net/http"
"sync"
)
var mu sync.Mutex
var count int
func main() {
http.HandleFunc("/", handler) // 用handler函数处理根路由 / 下的每个请求
http.HandleFunc("/count", counter) // 用handler函数处理路径为 /count 的请求
log.Fatal(http.ListenAndServe("localhost:8000", nil))
}
// 将访问的路径返回到页面,并计数+1
func handler(w http.ResponseWriter, r *http.Request) {
mu.Lock()
count++
mu.Unlock()
fmt.Fprintf(w, "URL.Path = %q\n", r.URL.Path)
}
// 返回计数值
func counter(w http.ResponseWriter, r *http.Request) {
mu.Lock()
fmt.Fprintf(w, "Count %d\n", count)
mu.Unlock()
}