Go

Multiple Return Values + Named Returns

admin by @admin ADMIN
1h ago
May 31, 2026
Public
0 0 up · 0 down Sign in to vote
Go functions can return multiple values — most idiomatically a `(result, error)` pair. Named returns let you document the meaning of each value AND enable naked returns in short functions.
Go
Raw
package main

import (
    "errors"
    "fmt"
)

// Classic — two return values, no names
func divide(a, b float64) (float64, error) {
    if b == 0 {
        return 0, errors.New("divide by zero")
    }
    return a / b, nil
}

// Named returns — values are zero-initialized, can be modified, naked return ok
func divmod(a, b int) (quot, rem int, err error) {
    if b == 0 {
        err = errors.New("divide by zero")
        return                                  // naked return — uses named values
    }
    quot = a / b
    rem = a % b
    return
}

func main() {
    if v, err := divide(10, 3); err == nil {
        fmt.Printf("10/3 = %.2f\n", v)
    }
    q, r, _ := divmod(17, 5)
    fmt.Printf("17 = %d*5 + %d\n", q, r)
}
Tags

Save your own code snippets

Create a free account and build your private vault. Share publicly whenever you want.