Golang is a procedural programming language ideal to build simple, reliable, and efficient software.
Creating Web Servers Using Golang:
Initialize a project
Create a project folder with a .go file inside eg. server.go.
Directory structure:

The server.go file:
package main
import (
"fmt"
"log"
"net/http"
)
func main() {
// API routes
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello world from GfG")
})
http.HandleFunc("/hi", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hi")
})
port := ":5000"
fmt.Println("Server is running on port" + port)
// Start server on port specified above
log.Fatal(http.ListenAndServe(port, nil))
}
Run the server using the following command (make sure you're in the project directory):
go run server.goNote: You have to stop the server with Ctrl + C and restart via the same command whenever the server.go file is changed.
Console:

Open the desired web browser and any of these URLs to verify if the server is running:
http://localhost:5000/ or http://localhost:5000/hiOutput:


Serving static files:
Create a static folder with all the static files.
Example directory structure:

Example static files:
- The GfG logo
- The index.html file
<html>
<head>
<title>Home</title>
</head>
<body>
<h2>Home page</h2>
</body>
</html>
- The about.html file
<html>
<head>
<title>About</title>
</head>
<body>
<h2>about page!</h2>
</body>
</html>
Now Edit the server.go file:
package main
import (
"fmt"
"log"
"net/http"
)
func main() {
// API routes
// Serve files from static folder
http.Handle("/", http.FileServer(http.Dir("./static")))
// Serve api /hi
http.HandleFunc("/hi", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hi")
})
port := ":5000"
fmt.Println("Server is running on port" + port)
// Start server on port specified above
log.Fatal(http.ListenAndServe(port, nil))
}
Verifying if static files are served:


