bhylu.com

Advertisements

Go Methods

Attach a behaviour to the type whose rule it enforces.

How it works

A method is a function with a receiver. A value receiver gets a copy; a pointer receiver can change the original value. Use consistent receiver choices when a type owns mutable state, and validate a requested change before committing it.

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 methods.go in a learning folder, then run go run methods.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 methods.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

methods.go

package main

import (
	"fmt"
)

type Desk struct{ Capacity, Used int }

func (d *Desk) Accept(amount int) bool {
	if d == nil || d.Capacity < 0 || d.Used < 0 || d.Used > d.Capacity || amount <= 0 || amount > d.Capacity-d.Used {
		return false
	}
	d.Used += amount
	return true
}

func main() {
	desk := Desk{Capacity: 5, Used: 2}
	fmt.Println(desk.Accept(2), desk.Used)
	fmt.Println(desk.Accept(2), desk.Used)
}

Expected result

true 4
false 4

The first request fits. The second is refused without changing Used. Comparing amount with Capacity-Used avoids an addition that could overflow when the contract is generalised.

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.