Bird
Raised Fist0
Goprogramming~20 mins

Multiple return values in Go - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Go Multiple Return Values Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
What is the output of this Go code with multiple return values?

Look at this Go function that returns two values. What will be printed?

Go
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)
}
AError: cannot use divide(10, 3) in multiple assignment
B3 0
C3 3
D3 1
Attempts:
2 left
💡 Hint

Remember that the first return value is the quotient and the second is the remainder.

❓ Predict Output
intermediate
2:00remaining
What happens when you ignore one return value in Go?

What will this program print?

Go
package main
import "fmt"

func getValues() (int, string) {
    return 42, "hello"
}

func main() {
    val, _ := getValues()
    fmt.Println(val)
}
A42
Bhello
CCompilation error due to unused variable
D42 hello
Attempts:
2 left
💡 Hint

The underscore (_) is used to ignore a return value.

❓ Predict Output
advanced
2:00remaining
What is the output of this Go function returning named values?

Check the named return values and what the function returns.

Go
package main
import "fmt"

func swap(x, y int) (a int, b int) {
    a = y
    b = x
    return
}

func main() {
    a, b := swap(5, 10)
    fmt.Println(a, b)
}
A5 10
B10 5
C0 0
DCompilation error: missing return values
Attempts:
2 left
💡 Hint

Named return values can be returned by just using return without arguments.

❓ Predict Output
advanced
2:00remaining
What error does this Go code produce when returning multiple values?

What error will this code cause?

Go
package main

func foo() (int, int) {
    return 1
}

func main() {}
Asyntax error: unexpected newline
Bmissing return at end of function
Ccannot use 1 (type int) as type (int, int) in return statement
Dno error, compiles fine
Attempts:
2 left
💡 Hint

Check the number of values returned compared to the function signature.

🧠 Conceptual
expert
2:00remaining
How many values does this Go function return and what are their types?

Analyze this function signature and tell how many values it returns and their types.

Go
func process(data []int) (sum int, avg float64, err error) {
    // implementation omitted
    return
}
AThree values: int, float64, and error
BTwo values: int and float64
CThree values: int, int, and error
DOne value: a struct containing int, float64, and error
Attempts:
2 left
💡 Hint

Look at the named return values and their types carefully.

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