How to Create a Go Project

Hey! If you love Go and building Go apps as much as I do, let's connect on Twitter or LinkedIn. I talk about this stuff all the time!

Want to learn how to build better Go applications faster and easier? You can.

Check out my course on the Go Standard Library. You can check it out now for free.


Learn how to create a golang project and build a blog using the language.

Introduction:
Golang is a statically typed, compiled language that is designed for building scalable, concurrent systems. It has gained popularity in recent years due to its simplicity, performance, and concurrency features. In this article, we will explore how to create a golang project from scratch and build a simple blog using the language.

Step 1: Install Go
The first step is to install Go on your computer. You can download the latest version of Go from the official website (https://golang.org/dl/). Follow the installation instructions for your operating system. Once installed, you should be able to run the go command in your terminal or command prompt.

Step 2: Set up a Workspace
Go uses a concept called a workspace to organize its projects. A workspace is a directory that contains all of your Go code and files. To set up a workspace, create a new directory for your project and run the following command in your terminal or command prompt:

$ go mod init example.com/blog

This will initialize a new module called example.com/blog inside the current directory.

Step 3: Create a Package
In Go, a package is a collection of related code that provides a set of functions and types for a specific purpose. To create a package, create a new directory inside your workspace with the name of your package. For example, if you want to create a blog package, you would create a directory called blog inside your workspace.

Step 4: Create a Main Function
A Go program must have a main function that serves as the entry point for the program. This is where the execution of the program begins. To create a main function, add a new file called main.go to your package directory and add the following code:

package main

import (
	"fmt"
)

func main() {
	fmt.Println("Hello, World!")
}

This will print “Hello, World!” to the console when you run the program.

Step 5: Add a Web Server
To build a blog, we need to add a web server to our project. Go provides a built-in HTTP server that we can use to serve HTML pages. To add the web server, import the net/http package in your main function and create a new file called server.go:

package main

import (
	"fmt"
	"log"
	"net/http"
)

func main() {
	fmt.Println("Starting server...")

	handler := http.NewServeMux()
	server := &http.Server{Addr: ":8080", Handler: handler}

	log.Fatal(server.ListenAndServe())
}

This will start a new web server listening on port 8080.

Step 6: Create HTML Templates
Now that we have our web server, we need to create some HTML templates for our blog pages. Go provides a built-in template engine called html/template that allows us to define and render templates. To use the template engine, import the html/template package in your main function and create a new file called templates/index.html:

package main

import (
	"fmt"
	"log"
	"net/http"
	"os"
)

func main() {
	fmt.Println("Starting server...")

	handler := http.NewServeMux()
	server := &http.Server{Addr: ":8080", Handler: handler}

	log.Fatal(server.ListenAndServe())
}

This will start a new web server listening on port 8080 and serve the index.html template when the root URL (/) is requested.

Step 7: Add Routes
To add routes to our web server, we need to define the endpoints that our blog pages will be served from. In Go, we can use the http.HandleFunc function to define a new route and attach a handler function to it. For example, to create a new page for our blog, you could add the following code:

package main

import (
	"fmt"
	"log"
	"net/http"
	"os"
)

func main() {
	fmt.Println("Starting server...")

	handler := http.NewServeMux()
	server := &http.Server{Addr: ":8080", Handler: handler}

	log.Fatal(server.ListenAndServe())
}

This will start a new web server listening on port 8080 and serve the index.html template when the root URL (/) is requested.

Step 8: Add Static Files
To add static files to our blog, such as images or CSS stylesheets, we need to create a new directory called public inside our workspace. This directory will contain all of our static assets. To serve these assets from our web server, we can use the http.FileServer function. For example:

package main

import (
	"fmt"
	"log"
	"net/http"
	"os"
)

func main() {
	fmt.Println("Starting server...")

	handler := http.NewServeMux()
	server := &http.Server{Addr: ":8080", Handler: handler}

	log.Fatal(server.ListenAndServe())
}

This will start a new web server listening on port 8080 and serve the index.html template when the root URL (/) is requested.

Conclusion:
In this article, we have learned how to create a golang project from scratch and build a simple blog using the language. We covered the basics of setting up a workspace, creating a package, adding a web server, creating HTML templates, adding routes, and adding static files. With these fundamentals, you can start building more complex applications in Go.


Questions or comments? Reach out to me


Learn how to leverage the Go Standard Library like a PRO.

I just created a new course, The Go Standard Library, check it out!