How to compile Go program consisting of multiple files?

So I have a small program that consists of three files, all belonging to the same package (main), but when I do “go build main.go” the build doesn’t succeed. When it was just one file (main.go) everything worked fine. Now that I took some effort to separate the code, it looks like the compiler is unable to find the stuff that was taken out of main.go and put into these two other files (that reside at the same directory as the main.go). Which results in “undefined ‘type’” errors.

I read something about setting the GOPATH variable, so I tried

set GOPATH=%cd%
go build main.go

but that too didn’t work.

Any help is appreciated.

1 Like

Supposing you’re writing a program called myprog :

Put all your files in a directory like this


Then add myproject/go to GOPATH

And run

go install myprog

This way you’ll be able to add other packages and programs in myproject/go/src if you want.

Reference :

(this doc is always missed by newcomers, and often ill-understood at first. It should receive the greatest attention of the Go team IMO)