Create Project


Create Project

🙋 Need help? Ask an expert now!

Start Hacking

These are the steps to start your new Go project. To follow Go convention, please replace with your GitHub path, i.e., for me!

Make sure that your GOPATH environment variable is set, as this will use that for finding paths!

1. Create Project Root

mkdir -p $GOPATH/src/

All of the following steps will be from the $GOPATH/src/ dir, so make sure you cd into that if you haven't already!

2. Setup Project Root

Setup Git repo (best practice): git init

Create a .gitignore:

echo '# Binaries for programs and plugins

# GoLand IDE files

# Dependencies (more on this later)

# Ignore our binary

# Test binary, build with `go test -c`

# Output of the go coverage tool, specifically when used with LiteIDE
*.out' > .gitignore

3. Create entrypoint

echo 'package main

import (

func main() {
    fmt.Println("Hello EXLskills!")

' > main.go

4. Run fmt

Format our code and write in-place: gofmt -w .

5. Build

go build

6. Run

./demo-go-webservice (runs binary built from go build)

In the future, we will more frequently use go run main.go which will build on the fly and then run.

7. Add dep

Since Go's out-of-the-box package manager won't let us share our requirements with implementers, we use dep (install it from here if you don't have it yet) to use the Go vendor directory standard and also give us a lockfile and package list to put into the Git repo. Some developers like to add the vendor directory to Git, however, for this project, we will opt to ignore it. Implementers will need to run dep ensure in order to get the dependencies or it will use their local versions.

Setup: dep init

Load: dep ensure -v # The v flag will show us more detailed progress as it might take a bit with more dependencies

8. (Optional) Commit our first step

Add our changes: git add .

Commit our changes: git commit -m"Init go project"

Note: if you want to push to a remote, now would be the time to add it and start pushing!

Project Source Code

For reference (or lazy typists!) you may find the full source on GitHub here.

Intro Wrap Up

We now have a working minimal Go project that will form the basis of our web service and all related files. Now is a good time to open this up in an IDE as from here on out, there won't be such detailed explanations of steps like 'build', 'run', or 'create a go file'. It will be assumed that if you don't already know, that you can use this as a reference, or find a resource in the EXLskills A$AP Go Open Course!

Edit Me on GitHub!