Jump to content

Go

From Smithnet Wiki

Building and Packages

go run test.go
go build test.go

If there are multiple files in the main package, must make go access all of them:

go run .
go build .

To remove debug symbols:

go build -ldflags="-s -w" .

In multi-file projects, main.go is the convention. The binary name is taken from the project directory.

gofmt -w .
gofmt -d test.go

Initialise project, create go.mod file:

go mod init example-project

Download, and add reference to go.mod file:

go get github.com/alexflint/go-arg

Ensure go.mod is in sync with code imports:

go mod tidy

Note the go.sum file that contains anti-tampering checksums.

To cross compile:

GOOS=linux GOARCH=amd64 go build -ldflags="-s -w" -trimpath -o disco_scan_updater
GOOS=windows GOARCH=amd64 go build -ldflags="-s -w" -trimpath -o disco_scan_updater.exe

Show available platforms:

go tool dist list

Windows Executables with winres

To add icons and version details:

go install github.com/tc-hib/go-winres@latest
~/go/bin/go-winres init

Add resources:

  • Edit winres/winres.json
    • A single high resolution png specified for RT_GROUP_ICON will be rescaled automatically
  • Add winres/icon.png

Make syso resources, and build into binary:

~/go/bin/go-winres make
go build

Useful Packages