Go on mielenkiintoinen ohjelmointikieli nykyaikaisten verkkosovellusten ja järjestelmäohjelmistojen rakentamiseen. Se loi valtavan kohua julkaisunsa jälkeen ja tarjoaa palveluja, kuten Dockerin, Kubernetesin, Terraformin, Dropboxin ja Netflixin .
Lisäksi Go:n vankka kokoelma sisäänrakennettuja paketteja tekee siitä loistavan valinnan web-ohjelmointiin. Tämä artikkeli näyttää sinulle, kuinka perusverkkopalvelin kirjoitetaan Gossa .
Tuo tarvittavat paketit
Net/HTTP-paketti sisältää kaiken tarvittavan verkkopalvelimen ja asiakkaan luomiseen. Tämä paketti sisältää hyödyllisiä toimintoja web-ohjelmointiin.
Voit tuoda sen lisäämällä alla olevan rivin lähdekoodisi alkuun:
import "net/http"
Artikkeli käyttää myös fmt- pakettia merkkijonojen muotoiluun ja lokipakettia virheiden käsittelyyn. Voit tuoda ne yksitellen yllä olevan kuvan mukaisesti tai tuoda kaikki paketit yhdellä tuontilausekkeella:
import (
"fmt"
"log"
"net/http"
)
Voit jatkaa pääfunktion kirjoittamista tarvittavien pakettien tuonnin jälkeen. Tallenna lähdetiedosto .go- tunnisteella . Jos käytät Vimia , käytä alla olevaa komentoa Vimin tallentamiseen ja poistumiseen:
:wq server.go
Kirjoita pääfunktio
Go-ohjelmat sijaitsevat suoraan päätoiminnossa, jota kutsutaan osuvasti "main". Sinun on soitettava palvelinpuhelu täällä . Lisää seuraavat rivit lähdekoodiin ja katso, mitä ne tekevät:
func main() {
http.HandleFunc("/", index)
log.Fatal(http.ListenAndServe(":8080", nil))
}
Esimerkki on pääfunktion määritteleminen func -avainsanalla . Golla on tiukat säännöt avaustuen sijoittelusta, joten varmista, että aloitustuki on oikealla linjalla. Päälauseen ensimmäinen lause määrittää, että kaikki verkkopyynnöt juuripolkuun ( "/" ) käsitellään indeksillä, joka on tyyppi http.HandlerFunc .
Toinen rivi käynnistää verkkopalvelimen http.ListenAndServe -funktion kautta . Se ilmoittaa palvelimelle, että se kuuntelee jatkuvasti saapuvia HTTP-pyyntöjä palvelimen portissa 8080. Tämän toiminnon toista parametria tarvitaan estämään ohjelma loppuun asti.
Koska http.ListenAndServe palauttaa aina virheen, esimerkki käärii tämän kutsun lokiin.Fatal call . Tämä lausunto kirjaa kaikki palvelinpuolella luodut virheilmoitukset.
Toteuta käsittelytoiminnot
Kuten näet, päätoiminto kutsuu käsittelijän funktioindeksiä käsitelläkseen asiakaspyyntöjä. Esimerkki ei kuitenkaan ole vielä määrittänyt tätä toimintoa palvelimelleen.
Lisätään tarvittavat lauseet, jotta indeksifunktiosta tulee käyttökelpoinen:
func index(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hi there, welcome to %s!", r.URL.Path[1:])
}
Tämä funktio ottaa kaksi eri argumenttia, tyypit http.ResponseWriter ja http.Request . http.ResponseWriter- parametri sisältää palvelimen vastauksen saapuvaan pyyntöön http.Request- objektin muodossa .
Fmt -paketin funktiota Fprintf käytetään tekstimerkkijonojen näyttämiseen ja käsittelemiseen. Artikkeli käyttää tätä näyttämään palvelimen vastaukset verkkopyyntöihin. Lopuksi r.URL.Path[1:]- elementtiä käytetään tietojen hakemiseen juuripolun jälkeen.
Lisää kaikki loput osat
Go-verkkopalvelimesi on valmis, kun olet lisännyt kaikki jäljellä olevat komponentit. Koodi näyttää tältä:
import (
"fmt"
"log"
"net/http"
)
func index(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hi there, welcome to %s!", r.URL.Path[1:])
}
func main() {
http.HandleFunc("/", index)
log.Fatal(http.ListenAndServe(":8080", nil))
}
Ensimmäinen rivi tarvitaan kääntämään tämä Go-verkkopalvelinkoodi suoritettavaksi tiedostoksi.

Käännä tämä Go-verkkopalvelinkoodi suoritettavaksi tiedostoksi