Rumah > Artikel > pembangunan bahagian belakang > Adakah contoh pelayan2 dalam buku bahasa pengaturcaraan Go salah?
Saya sedang membaca "Go Programming Language Book". Dalam Bab 1, Pelayan 2 Contoh: Kod Buku, mutex digunakan untuk menghalang keadaan perlumbaan. Walau bagaimanapun, saya menyalin kod dan cuba menjalankannya, tetapi hasilnya tidak konsisten. Adakah kod dalam contoh salah?
Beginilah cara saya menggunakan kod:
server.go
package server import ( "fmt" "log" "net/http" "sync" ) const ( port string = ":8000" ) var count int var mu sync.mutex func run() { http.handlefunc("/", handler) http.handlefunc("/count", counter) fmt.printf("server is listening on port: %s\n", port) log.fatal(http.listenandserve(port, nil)) } 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() }
main.go
package main import "book/server" func main() { server.Run() }
Apabila saya menjalankan: pergi jalankan main.go dan akses dua halaman localhost:8000 dan localhost:8000/count
Saya menjangkakan kiraan hanya meningkat apabila saya melawat halaman / bukannya halaman /count, dan akan meningkat berdasarkan kekerapan saya memuat semula.
Itu kerana apabila anda menguji halaman web dengan penyemak imbas, kebanyakan masa, penyemak imbas juga menghantar permintaan kepada http://localhost:8000/favicon.ico
. Lihat tangkapan skrin di bawah:
/favicon.ico
没有专用的处理程序,它与 /
匹配,因此将由 server.handler
Memproses.
Adalah disyorkan untuk menggunakan alat lain untuk menguji demo tersebut. Contohnya, curl
:
$ curl 'http://localhost:8000/' $ curl 'http://localhost:8000/count'
Atas ialah kandungan terperinci Adakah contoh pelayan2 dalam buku bahasa pengaturcaraan Go salah?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!