bhylu.com

Advertisements

Go Errors

Reject impossible capacity values instead of returning a plausible number.

How it works

An error is a value implementing the Error method. Return a non-nil error when the requested calculation cannot meet its contract; callers must check it before using the result. Expected invalid input is usually an error result, not a panic.

Run this Go example

Install Go separately from the official Go downloads and check go version in a new terminal. The reviewed baseline is Go 1.27.3 on Windows amd64; the authored syntax and standard-library APIs require Go 1.22 or newer. Save the complete source below as errors.go in a learning folder, then run go run errors.go from that folder. These examples use only the standard library.

Bhylu has no Go browser runner. Apache, MySQL, PHP and the JavaScript or Python playground are not required to run these files. File examples own a temporary directory; HTTP client examples create an ephemeral loopback server and close it. They do not contact an external API.

Download the complete errors.go · Download all source files with hash checks

For the optional collection download, save download-examples.mjs in a new learning folder and run node download-examples.mjs. A local preview uses node download-examples.mjs http://127.0.0.1:8000/examples/go/. The downloader refuses an existing bhylu-go-examples folder and installs or executes no Go code.

Example

errors.go

package main

import (
	"errors"
	"fmt"
)

var errCapacity = errors.New("invalid capacity or used count")

func freeSlots(capacity, used int) (int, error) {
	if capacity < 0 || used < 0 || used > capacity {
		return 0, errCapacity
	}
	return capacity - used, nil
}

func main() {
	free, err := freeSlots(12, 5)
	if err != nil {
		panic(err)
	}
	fmt.Println(free)
	_, err = freeSlots(4, 9)
	fmt.Println(errors.Is(err, errCapacity))
}

Expected result

7
true

The valid call returns seven. The invalid call returns a shared sentinel, which errors.Is recognises. Panic is used only to stop this self-checking demo if a supposedly valid fixture fails. A normal application should return or handle that failure.

For language rules and APIs, use the Go language specification and standard-library documentation. The fictional examples are learning fixtures, not a deployed parcel service.