Jump to content

Go: Difference between revisions

From Smithnet Wiki
No edit summary
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
== Install and Update ==
winget install GoLang.Go
go winget upgrade GoLang.Go
go mod edit -go=1.26  # Replace with the version you just installed
go mod tidy
== Building and Packages ==
== Building and Packages ==


Line 41: Line 49:


Add resources:
Add resources:
* Edit winres/winres.json
* Edit winres/winres.json (icon reference: RT_GROUP_ICON)
** A single high resolution png specified for RT_GROUP_ICON will be rescaled automatically
* Add winres/icon.png (s single high resolution PNG will be rescaled automatically
* Add winres/icon.png


Make syso resources, and build into binary:
Make syso resources, and build into binary:

Latest revision as of 11:08, 13 March 2026

Install and Update

winget install GoLang.Go
go winget upgrade GoLang.Go
go mod edit -go=1.26  # Replace with the version you just installed
go mod tidy

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 (icon reference: RT_GROUP_ICON)
  • Add winres/icon.png (s single high resolution PNG will be rescaled automatically

Make syso resources, and build into binary:

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

Useful Packages