Sukurk main.go — pirmasis serveris
Go turi HTTP serverį standartinėje bibliotekoje — jokių papildomų paketų nereikia. Sukurk aplanką (mkdir trumpiklis, viduje go mod init trumpiklis) ir main.go.
Kas vyksta:
http.HandleFunc("/", ...)— „kiekvieną užklausą į/(ir žemiau) apdoros ši funkcija".- Funkcija gauna du dalykus:
w(kur rašom atsakymą) irr(pati užklausa). Kitame žingsnyje juos išnagrinėsim; kol kas tik rašom tekstą sufmt.Fprintln(w, ...). http.ListenAndServe(":8080", nil)— paleidžia serverį prievade 8080 ir blokuoja amžinai, laukdamas užklausų. Grąžina tik įvykus klaidai, todėl apvyniojamlog.Fatal.
Patikrink. Viename terminale:
go run .
Turi pamatyti:
Trumpiklis listening on http://localhost:8080
Kitame terminale (arba naršyklėje atidaryk http://localhost:8080):
curl localhost:8080
Trumpiklis
Serveris atsako „Trumpiklis" į bet kokį kelią. Programa nesibaigia — ji sukasi ir laukia; sustabdyk su Ctrl+C.
Spąstai. Paleisk
go run .antrą kartą neuždaręs pirmojo (arba kai 8080 jau užimtas kito). Serveris iškart nulūžta:listen tcp :8080: bind: address already in use(Windows tą patį sako ilgiau:
Only one usage of each socket address ... is normally permitted.) Vienu prievadu vienu metu gali klausytis tik viena programa. Sustabdyk seną serverį (Ctrl+C) arba paleisk kitame prievade (:8081). Šitą klaidą matysi dažnai — dabar žinai, ką ji reiškia.