A Go egy érdekes programozási nyelv modern webalkalmazások és rendszerszoftverek készítéséhez. Megjelenése után hatalmas felhajtást keltett, és olyan szolgáltatásokat nyújt, mint a Docker, a Kubernetes, a Terraform, a Dropbox és a Netflix .
Ezenkívül a Go robusztus beépített csomagkészlete nagyszerű választássá teszi webes programozáshoz. Ez a cikk bemutatja, hogyan írhat alapvető webszervert a Go-ban.
Importálja a szükséges csomagokat
A net/HTTP csomag mindent megad, ami egy webszerver és kliens létrehozásához szükséges. Ez a csomag néhány hasznos funkciót mutat be a webes programozás kezeléséhez.
Importálhatja az alábbi sort a forráskód elejéhez:
import "net/http"
A cikk az fmt csomagot is használja a karakterláncok formázásához és a naplócsomagot a hibák kezelésére. Importálhatja őket egyenként a fent látható módon, vagy importálhatja az összes csomagot egyetlen importálási utasítással:
import (
"fmt"
"log"
"net/http"
)
A szükséges csomagok importálása után folytathatja a fő függvény írását. Mentse el a forrásfájlt .go kiterjesztéssel . Ha Vim-et használ , használja az alábbi parancsot a Vim mentéséhez és kilépéséhez:
:wq server.go
Írd le a fő függvényt!
A Go programok közvetlenül a fő funkción belül találhatók, amelyet találóan "fő"-nek neveznek. Itt szerverhívást kell indítania . Adja hozzá a következő sorokat a forráskódhoz, és nézze meg, mit csinálnak:
func main() {
http.HandleFunc("/", index)
log.Fatal(http.ListenAndServe(":8080", nil))
}
A példa a fő függvény meghatározása a func kulcsszó használatával . A Go-nak szigorú szabályok vonatkoznak a nyitómerevítő elhelyezésére, ezért ügyeljen arra, hogy a kezdőmerevítő a megfelelő vonalon legyen. A main első utasítása azt határozza meg, hogy a gyökérútvonalhoz ( "/" ) érkező összes webkérést index kezeli, amely a http.HandlerFunc típusú függvény .
A második sor elindítja a webszervert a http.ListenAndServe függvényen keresztül . Jelzi a szervernek, hogy folyamatosan figyelje a bejövő HTTP kéréseket a szerver 8080-as portján. Ennek a funkciónak a második paramétere szükséges a program blokkolásához a végéig.
Mivel a http.ListenAndServe mindig hibát ad vissza, a példa ezt a hívást egy naplóba csomagolja.Fatal call . Ez az utasítás naplózza a szerver oldalon generált hibaüzeneteket.
Valósítson meg feldolgozási funkciókat
Amint látható, a fő függvény meghívja a kezelő függvényindexet az ügyfélkérések kezelésére. A példa azonban még nem definiálta ezt a funkciót a szerveréhez.
Adjuk hozzá a szükséges utasításokat, hogy használható legyen az indexfüggvény:
func index(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hi there, welcome to %s!", r.URL.Path[1:])
}
Ez a függvény két különböző http.ResponseWriter és http.Request típusú argumentumot vesz igénybe . A http.ResponseWriter paraméter tartalmazza a szerver válaszát a bejövő kérésre, egy http.Request objektum formájában .
Az fmt csomagból származó Fprintf függvény a szöveges karakterláncok megjelenítésére és kezelésére szolgál. A cikk ezt használja a szerver webes kérésekre adott válaszainak megjelenítésére. Végül az r.URL.Path[1:] elem a gyökérútvonal utáni adatok lekérésére szolgál.
Adja hozzá az összes többi részt
A Go webszervere készen áll, miután hozzáadta az összes többi összetevőt. A kód így fog kinézni:
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))
}
Az első sor szükséges ahhoz, hogy ezt a Go webszerver kódot futtatható fájlként lefordítsák.

Fordítsa le ezt a Go webszerver kódot futtatható fájlként