Go's calling convention is an internal ABI detail managed by the compiler, not a manual configuration for developers. You control runtime behavior changes via the GODEBUG environment variable or //go:debug directives in your source code. To check the effective defaults for your module, run:
go list -f '{{.DefaultGODEBUG}}' ./...
To override a specific behavior like panicnil, set the environment variable:
export GODEBUG=panicnil=1
Or add a directive to your go.mod (Go 1.23+) or source file:
//go:debug panicnil=1
The compiler automatically handles argument passing, register usage, and stack layout based on your target architecture (GOARCH) and OS (GOOS).