bhylu.com

Advertisements

Go Variadic Functions

Sum a small number of checked demo counts without constructing arguments manually.

How it works

A variadic parameter has ... before its element type and is received as a slice. It must be the last parameter. Callers can supply individual values or expand an existing slice with .... With no values, its length is zero.

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

variadic-functions.go

package main

import (
	"fmt"
)

func total(values ...int) int {
	sum := 0
	for _, value := range values {
		sum += value
	}
	return sum
}

func main() {
	counts := []int{2, 3, 1}
	fmt.Println(total(), total(4, 5), total(counts...))
}

Expected result

0 9 6

total starts at zero, so the empty case has a defined result. The expanded slice provides the same values as individual arguments. This example uses small nonnegative counts; it does not protect against integer overflow.

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.

Advertisements