Bird
Raised Fist0
Goprogramming~10 mins

Multiple return values in Go - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to return two values from the function.

Go
func getValues() (int, string) {
    return [1], "hello"
}
Drag options to blanks, or click blank then click option'
A5
B"five"
Chello
Dtrue
Attempts:
3 left
💡 Hint
Common Mistakes
Returning a string instead of an integer as the first value.
Returning only one value instead of two.
2fill in blank
medium

Complete the code to assign multiple return values to variables.

Go
func main() {
    a, b := getValues()
    fmt.Println(a, [1])
}
Drag options to blanks, or click blank then click option'
Ab
Bc
C"b"
Da
Attempts:
3 left
💡 Hint
Common Mistakes
Printing variable a twice.
Using a string "b" instead of variable b.
3fill in blank
hard

Fix the error in the function signature to return two values.

Go
func calculate() [1] {
    return 10, 20
}
Drag options to blanks, or click blank then click option'
Aint
Bint int
Cint, int
D(int, int)
Attempts:
3 left
💡 Hint
Common Mistakes
Writing multiple types without parentheses.
Using invalid syntax like 'int int'.
4fill in blank
hard

Fill both blanks to declare and assign multiple return values correctly.

Go
func main() {
    [1], [2] := getValues()
    fmt.Println(a, b)
}
Drag options to blanks, or click blank then click option'
Aa
Bb
Cc
Dd
Attempts:
3 left
💡 Hint
Common Mistakes
Using the same variable name twice.
Using variables not matching the print statement.
5fill in blank
hard

Fill all three blanks to create a function that returns three values and assign them.

Go
func getThree() (int, string, bool) {
    return [1], [2], [3]
}

func main() {
    x, y, z := getThree()
    fmt.Println(x, y, z)
}
Drag options to blanks, or click blank then click option'
A7
B"seven"
Ctrue
Dfalse
Attempts:
3 left
💡 Hint
Common Mistakes
Returning values in wrong order.
Using false instead of true.

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