Bird
Raised Fist0
Goprogramming~15 mins

Multiple return values in Go - Mini Project: Build & Apply

Choose your learning style10 modes available
Multiple return values in Go
📖 Scenario: Imagine you are writing a small program to calculate the area and perimeter of a rectangle. You want a function that can give you both results at the same time.
🎯 Goal: Create a Go program with a function that returns two values: the area and the perimeter of a rectangle. Then print these values.
📋 What You'll Learn
Create a function called rectangleMetrics that takes two int parameters: length and width.
The function rectangleMetrics must return two int values: the area and the perimeter.
Call the function with length = 5 and width = 3.
Print the returned area and perimeter values with clear labels.
💡 Why This Matters
🌍 Real World
Functions that return multiple values are common in Go for returning results and errors or multiple related results together.
💼 Career
Understanding multiple return values is important for writing clean, efficient Go code in real-world applications like web servers, tools, and data processing.
Progress0 / 4 steps
1
Create variables for rectangle dimensions
Create two int variables called length and width and set them to 5 and 3 respectively.
Go
Hint

Use := to declare and assign variables in Go.

2
Create the rectangleMetrics function
Create a function called rectangleMetrics that takes two int parameters named length and width. It should return two int values.
Go
Hint

Calculate area as length * width and perimeter as 2 * (length + width). Return both values.

3
Call the function and store results
Call the function rectangleMetrics with length and width variables. Store the returned values in two variables called area and perimeter.
Go
Hint

Use multiple assignment to receive both returned values.

4
Print the area and perimeter
Print the values of area and perimeter with the exact text: Area: followed by the area value, and Perimeter: followed by the perimeter value.
Go
Hint

Use fmt.Println to print each value with its label.

Practice

(1/5)
1. In Go, what does it mean when a function returns multiple values?
easy
A. The function sends back more than one result at the same time.
B. The function can only return one value but multiple times.
C. The function returns a list of values inside a slice.
D. The function returns values only if an error occurs.

Solution

  1. Step 1: Understand function return types in Go

    Go functions can list multiple types in parentheses to return several values together.
  2. Step 2: Interpret multiple return values meaning

    This means the function sends back more than one result at once, not just one or a list.
  3. Final Answer:

    The function sends back more than one result at the same time. -> Option A
  4. Quick Check:

    Multiple return values = more than one result [OK]
Hint: Multiple return means several results sent together [OK]
Common Mistakes:
  • Thinking it returns a slice or array
  • Assuming only one value can be returned
  • Confusing multiple returns with repeated calls
2. Which of the following is the correct syntax to declare a function in Go that returns two integers?
easy
A. func add() int, int { return 1, 2 }
B. func add() [int, int] { return 1, 2 }
C. func add() { return 1, 2 }
D. func add() (int, int) { return 1, 2 }

Solution

  1. Step 1: Check Go function return type syntax

    In Go, multiple return types are enclosed in parentheses like (int, int).
  2. Step 2: Match syntax with options

    func add() (int, int) { return 1, 2 } correctly uses (int, int) and returns two integers separated by a comma.
  3. Final Answer:

    func add() (int, int) { return 1, 2 } -> Option D
  4. Quick Check:

    Multiple returns use parentheses (type1, type2) [OK]
Hint: Use parentheses around multiple return types [OK]
Common Mistakes:
  • Omitting parentheses around return types
  • Using square brackets instead of parentheses
  • Returning multiple values without declaring types
3. What will be the output of this Go program?
package main
import "fmt"
func divide(a, b int) (int, int) {
    return a / b, a % b
}
func main() {
    q, r := divide(10, 3)
    fmt.Println(q, r)
}
medium
A. 3 3
B. 3 0
C. 3 1
D. 10 3

Solution

  1. Step 1: Understand the divide function

    The function returns two values: quotient (a / b) and remainder (a % b).
  2. Step 2: Calculate divide(10, 3)

    10 divided by 3 is 3 with remainder 1, so returns (3, 1).
  3. Final Answer:

    3 1 -> Option C
  4. Quick Check:

    10/3=3 remainder 1 [OK]
Hint: Remember / is quotient, % is remainder [OK]
Common Mistakes:
  • Confusing remainder with quotient
  • Swapping the order of returned values
  • Expecting a single return value
4. Identify the error in this Go function that returns two strings:
func names() (string, string) {
    return "Alice"
}
medium
A. Missing second return value causes a compile error.
B. Function should return only one string, not two.
C. Return statement syntax is incorrect.
D. Function must have parameters to return multiple values.

Solution

  1. Step 1: Check function return signature

    The function declares it returns two strings (string, string).
  2. Step 2: Check return statement

    It returns only one string "Alice", missing the second value, causing a compile error.
  3. Final Answer:

    Missing second return value causes a compile error. -> Option A
  4. Quick Check:

    Return count must match declared types [OK]
Hint: Return values count must match function signature [OK]
Common Mistakes:
  • Returning fewer values than declared
  • Assuming parameters affect return count
  • Incorrect return statement syntax
5. You want to write a Go function that returns the minimum and maximum values from a slice of integers. Which function correctly returns both values?
hard
A. func minMax(nums []int) int { min, max := nums[0], nums[0] for _, v := range nums { if v < min { min = v } if v > max { max = v } } return min, max }
B. func minMax(nums []int) (int, int) { min, max := nums[0], nums[0] for _, v := range nums { if v < min { min = v } if v > max { max = v } } return min, max }
C. func minMax(nums []int) (int) { min, max := nums[0], nums[0] for _, v := range nums { if v < min { min = v } if v > max { max = v } } return min, max }
D. func minMax(nums []int) (int, int) { min := nums[0] max := nums[0] for i := 1; i < len(nums); i++ { if nums[i] < min { min = nums[i] } if nums[i] > max { max = nums[i] } } return max, min }

Solution

  1. Step 1: Check function return types

    Function must return two integers (min and max), so signature must be (int, int).
  2. Step 2: Verify logic and return order

    func minMax(nums []int) (int, int) { min, max := nums[0], nums[0] for _, v := range nums { if v < min { min = v } if v > max { max = v } } return min, max } correctly initializes min and max, loops through nums, updates min and max, and returns min, max in correct order.
  3. Final Answer:

    func minMax(nums []int) (int, int) { min, max := nums[0], nums[0] for _, v := range nums { if v < min { min = v } if v > max { max = v } } return min, max } -> Option B
  4. Quick Check:

    Return (min, max) with correct signature and logic [OK]
Hint: Return multiple values with matching signature and correct order [OK]
Common Mistakes:
  • Wrong return type signature
  • Returning values in wrong order
  • Returning only one value instead of two
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard