📖 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
Step 1: Understand function return types in Go
Go functions can list multiple types in parentheses to return several values together.
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.
Final Answer:
The function sends back more than one result at the same time. -> Option A
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
Step 1: Check Go function return type syntax
In Go, multiple return types are enclosed in parentheses like (int, int).
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.
Final Answer:
func add() (int, int) { return 1, 2 } -> Option D
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
Step 1: Understand the divide function
The function returns two values: quotient (a / b) and remainder (a % b).
Step 2: Calculate divide(10, 3)
10 divided by 3 is 3 with remainder 1, so returns (3, 1).
Final Answer:
3 1 -> Option C
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
Step 1: Check function return signature
The function declares it returns two strings (string, string).
Step 2: Check return statement
It returns only one string "Alice", missing the second value, causing a compile error.
Final Answer:
Missing second return value causes a compile error. -> Option A
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
Step 1: Check function return types
Function must return two integers (min and max), so signature must be (int, int).
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.
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
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 unknownstrongwhile earning +1 Grip toward your certificate.