HOWTO structure Golang project
https://golang.org/doc/code.html
Settings GOPATH
https://github.com/golang/go/wiki/SettingGOPATH
Golang - complex project structure
https://github.com/golang-standards/project-layout
Some Go projects do have a
Don't confuse the project level
Set environment
Create first project
Install project
Run project
GitHub project https://github.com/dveselka/golang-hello
https://golang.org/doc/code.html
Settings GOPATH
https://github.com/golang/go/wiki/SettingGOPATH
Golang - complex project structure
https://github.com/golang-standards/project-layout
Directories You Shouldn't Have
/src
Some Go projects do have a src
folder, but it usually happens when the devs came from the Java world where it's a common pattern. If you can help yourself try not to adopt this Java pattern. You really don't want your Go code or Go projects to look like Java :-)Don't confuse the project level
/src
directory with the /src
directory Go uses for its workspaces as described in How to Write Go Code
. The $GOPATH
environment variable points to your (current) workspace (by default it points to $HOME/go
on non-windows systems). This workspace includes the top level /pkg
, /bin
and /src
directories. Your actual project ends up being a sub-directory under /src
, so if you have the /src
directory in your project the project path will look like this: /some/path/to/workspace/src/your_project/src/your_code.go
. Note that with Go 1.11 it's possible to have your project outside of your GOPATH
, but it still doesn't mean it's a good idea to use this layout pattern.Set environment
vi ~/.bash_profile
export GOPATH=$(go env GOPATH)
export PATH=$PATH:$(go env GOPATH)/bin
source ~/.bash_profile
Create first project
mkdir-p $GOPATH/src/github.com/dveselka/golang-hello
Install project
go install github.com/dveselka/golang-hello
[dave@localhost golang-hello]$ find $GOPATH/src/github.com
/home/dave/go/src/github.com
/home/dave/go/src/github.com/dveselka
/home/dave/go/src/github.com/dveselka/golang-hello
/home/dave/go/src/github.com/dveselka/golang-hello/hello.go
Run project
[dave@localhost golang-hello]$ $GOPATH/bin/golang-hello
Hello, world.
GitHub project https://github.com/dveselka/golang-hello