Go är ett intressant programmeringsspråk för att bygga moderna webbapplikationer såväl som systemprogramvara. Det skapade en enorm buzz efter lanseringen och driver tjänster som Docker, Kubernetes, Terraform, Dropbox och Netflix .
Dessutom gör Gos robusta samling av inbyggda paket det till ett utmärkt val för webbprogrammering. Den här artikeln kommer att visa dig hur du skriver en grundläggande webbserver i Go.
Importera nödvändiga paket
Net/HTTP-paketet ger allt som behövs för att skapa en webbserver och klient. Detta paket presenterar några användbara funktioner för att hantera webbprogrammering.
Du kan importera den genom att lägga till raden nedan i början av din källkod:
import "net/http"
Artikeln kommer också att använda fmt- paketet för att formatera strängar och loggpaketet för att hantera fel. Du kan importera dem individuellt enligt ovan, eller importera alla paket med en enda importsats:
import (
"fmt"
"log"
"net/http"
)
Du kan fortsätta med att skriva huvudfunktionen efter att ha importerat de nödvändiga paketen. Fortsätt och spara källfilen med tillägget .go . Om du använder Vim , använd kommandot nedan för att spara och avsluta Vim:
:wq server.go
Skriv huvudfunktionen
Go-program finns direkt i huvudfunktionen, passande namnet "main". Du måste ringa ett serversamtal här. Lägg till följande rader i källkoden och se vad de gör:
func main() {
http.HandleFunc("/", index)
log.Fatal(http.ListenAndServe(":8080", nil))
}
Exemplet är att definiera huvudfunktionen med nyckelordet func . Go har strikta regler om placeringen av öppningsstaget, så se till att startstaget är på rätt linje. Den första satsen i main definierar att alla webbförfrågningar till rotsökvägen ( "/" ) kommer att hanteras av index, en funktion av typen http.HandlerFunc .
Den andra raden startar webbservern via http.ListenAndServe -funktionen . Det signalerar servern att kontinuerligt lyssna efter inkommande HTTP-förfrågningar på serverns port 8080. Den andra parametern i denna funktion behövs för att blockera programmet till slutet.
Eftersom http.ListenAndServe alltid returnerar ett fel, lindar exemplet detta anrop i en log.Fatal call . Denna sats loggar alla felmeddelanden som genereras på serversidan.
Implementera bearbetningsfunktioner
Som du kan se anropar huvudfunktionen hanterarfunktionsindexet för att hantera klientförfrågningar. Exemplet har dock ännu inte definierat denna funktionalitet för sin server.
Låt oss lägga till de nödvändiga satserna för att göra indexfunktionen användbar:
func index(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hi there, welcome to %s!", r.URL.Path[1:])
}
Den här funktionen tar två olika argument av typen http.ResponseWriter och http.Request . Parametern http.ResponseWriter innehåller serverns svar på den inkommande begäran, i form av ett http.Request- objekt .
Funktionen Fprintf från fmt -paketet används för att visa och manipulera textsträngar. Artikeln använder detta för att visa serverns svar på webbförfrågningar. Slutligen används elementet r.URL.Path[1:] för att hämta data efter rotsökvägen.
Lägg till alla återstående delar
Din Go-webbserver kommer att vara klar när du har lagt till alla återstående komponenter. Koden kommer att se ut så här:
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örsta raden behövs för att kompilera denna Go-webbserverkod som en körbar fil.

Kompilera denna Go-webbserverkod som en körbar fil