Go er et interessant programmeringsspråk for å bygge moderne webapplikasjoner så vel som systemprogramvare. Det skapte en enorm buzz etter utgivelsen og driver tjenester som Docker, Kubernetes, Terraform, Dropbox og Netflix .
Videre gjør Gos robuste samling av innebygde pakker det til et godt valg for webprogrammering. Denne artikkelen vil vise deg hvordan du skriver en grunnleggende webserver i Go.
Importer de nødvendige pakkene
Nett/HTTP-pakken gir alt som trengs for å lage en webserver og klient. Denne pakken presenterer noen nyttige funksjoner for å håndtere webprogrammering.
Du kan importere den ved å legge til linjen nedenfor i begynnelsen av kildekoden:
import "net/http"
Artikkelen vil også bruke fmt -pakken til å formatere strenger og loggpakken for å håndtere feil. Du kan importere dem individuelt som vist ovenfor, eller importere alle pakkene ved å bruke en enkelt importerklæring:
import (
"fmt"
"log"
"net/http"
)
Du kan fortsette med å skrive hovedfunksjonen etter å ha importert de nødvendige pakkene. Fortsett og lagre kildefilen med .go -utvidelsen . Hvis du bruker Vim , bruk kommandoen nedenfor for å lagre og avslutte Vim:
:wq server.go
Skriv hovedfunksjonen
Go-programmer ligger direkte i hovedfunksjonen, passende kalt "hoved". Du må foreta et serveranrop her . Legg til følgende linjer i kildekoden og se hva de gjør:
func main() {
http.HandleFunc("/", index)
log.Fatal(http.ListenAndServe(":8080", nil))
}
Eksemplet definerer hovedfunksjonen ved å bruke nøkkelordet func . Go har strenge regler for plassering av åpningsbøylen, så sørg for at startbøylen er på riktig linje. Den første setningen i main definerer at alle nettforespørsler til rotbanen ( "/" ) vil bli håndtert av indeks, en funksjon av typen http.HandlerFunc .
Den andre linjen starter webserveren via http.ListenAndServe -funksjonen . Det signaliserer serveren til kontinuerlig å lytte etter innkommende HTTP-forespørsler på serverens port 8080. Den andre parameteren i denne funksjonen er nødvendig for å blokkere programmet til slutten.
Siden http.ListenAndServe alltid returnerer en feil, legger eksemplet denne samtalen inn i en log.Fatal call . Denne setningen logger eventuelle feilmeldinger generert på serversiden.
Implementere behandlingsfunksjoner
Som du kan se, kaller hovedfunksjonen behandlerfunksjonsindeksen for å håndtere klientforespørsler. Eksemplet har imidlertid ennå ikke definert denne funksjonaliteten for serveren.
La oss legge til de nødvendige setningene for å gjøre indeksfunksjonen brukbar:
func index(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hi there, welcome to %s!", r.URL.Path[1:])
}
Denne funksjonen tar to forskjellige argumenter av typen http.ResponseWriter og http.Request . http.ResponseWriter - parameteren inneholder serverens svar på den innkommende forespørselen, i form av et http.Request- objekt .
Funksjonen Fprintf fra fmt -pakken brukes til å vise og manipulere tekststrenger. Artikkelen bruker dette til å vise serverens svar på nettforespørsler. Til slutt brukes r.URL.Path[1:]- elementet til å hente data etter rotbanen.
Legg til alle de resterende delene
Din Go-nettserver vil være klar når du har lagt til alle de gjenværende komponentene. Koden vil se slik ut:
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))
}
Den første linjen er nødvendig for å kompilere denne Go-nettserverkoden som en kjørbar fil.

Kompiler denne Go-nettserverkoden som en kjørbar fil