Bird
Raised Fist0
Goprogramming~20 mins

Function parameters in Go - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Go Function Parameters Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of function with multiple parameters
What is the output of this Go program?
Go
package main
import "fmt"
func addMultiply(a int, b int) (int, int) {
    return a + b, a * b
}
func main() {
    sum, product := addMultiply(3, 4)
    fmt.Println(sum, product)
}
A7 7
B12 7
C7 12
D34 12
Attempts:
2 left
💡 Hint
Look at the order of return values and how they are assigned.
❓ Predict Output
intermediate
2:00remaining
Output of function with variadic parameter
What does this Go program print?
Go
package main
import "fmt"
func sumAll(nums ...int) int {
    total := 0
    for _, n := range nums {
        total += n
    }
    return total
}
func main() {
    fmt.Println(sumAll(1, 2, 3, 4))
}
A10
B24
CError: variadic parameter not supported
D1234
Attempts:
2 left
💡 Hint
Variadic parameters allow passing any number of arguments.
❓ Predict Output
advanced
2:00remaining
Output of function with pointer parameter
What is printed by this Go program?
Go
package main
import "fmt"
func increment(x *int) {
    *x = *x + 1
}
func main() {
    a := 5
    increment(&a)
    fmt.Println(a)
}
ACompilation error
B5
C0
D6
Attempts:
2 left
💡 Hint
The function changes the value at the pointer's address.
❓ Predict Output
advanced
2:00remaining
Output of function with named return parameters
What does this Go program print?
Go
package main
import "fmt"
func divide(dividend, divisor int) (result int, err string) {
    if divisor == 0 {
        err = "division by zero"
        return
    }
    result = dividend / divisor
    return
}
func main() {
    res, err := divide(10, 0)
    fmt.Println(res, err)
}
A0
B0 division by zero
C10 division by zero
Druntime error: integer divide by zero
Attempts:
2 left
💡 Hint
Named return parameters are zero-valued if not set explicitly.
🧠 Conceptual
expert
2:00remaining
Function parameter passing behavior
Which statement correctly describes how Go passes function parameters?
AGo passes parameters by value, but slices and maps behave like references.
BGo passes parameters by reference, so changes affect the caller's variables.
CGo always passes parameters by value, copying the data.
DGo uses pointers automatically for all parameters to optimize performance.
Attempts:
2 left
💡 Hint
Think about how slices and maps behave differently from basic types.

Practice

(1/5)
1. What is the purpose of function parameters in Go?
easy
A. To print output from a function
B. To create new functions automatically
C. To stop a function from running
D. To send data into functions so they can use it

Solution

  1. Step 1: Understand what parameters do

    Parameters let you give information to a function when you call it.
  2. Step 2: Identify the correct purpose

    Sending data into functions makes them flexible and reusable with different inputs.
  3. Final Answer:

    To send data into functions so they can use it -> Option D
  4. Quick Check:

    Function parameters = send data into functions [OK]
Hint: Parameters pass data into functions for reuse [OK]
Common Mistakes:
  • Thinking parameters create functions
  • Confusing parameters with output
  • Believing parameters stop function execution
2. Which of the following is the correct way to declare a function with two integer parameters in Go?
easy
A. func add(a, b int) int {}
B. func add(a int, b) int {}
C. func add(int a, int b) int {}
D. func add(a int b int) int {}

Solution

  1. Step 1: Review Go function parameter syntax

    In Go, you can group parameters of the same type like a, b int.
  2. Step 2: Identify correct syntax

    func add(a, b int) int {} groups same type parameters correctly. func add(a int, b) int {} misses type for b. func add(int a, int b) int {} places types before names. func add(a int b int) int {} lacks commas.
  3. Final Answer:

    func add(a, b int) int {} -> Option A
  4. Quick Check:

    Group same type params: a, b int [OK]
Hint: Group same type params with commas before type [OK]
Common Mistakes:
  • Writing types before variable names (like C)
  • Missing commas between parameters (like D)
  • Forgetting type for second parameter (like B)
3. What will be the output of this Go program?
package main
import "fmt"
func greet(name string) {
    fmt.Println("Hello, " + name)
}
func main() {
    greet("Alice")
}
medium
A. Hello,
B. Hello, Alice
C. Hello, name
D. Compilation error

Solution

  1. Step 1: Understand function call with parameter

    The function greet takes a string parameter name and prints "Hello, " plus that name.
  2. Step 2: Check the argument passed

    In main, greet("Alice") is called, so name is "Alice".
  3. Final Answer:

    Hello, Alice -> Option B
  4. Quick Check:

    Function prints "Hello, " + argument [OK]
Hint: Function prints greeting plus passed name [OK]
Common Mistakes:
  • Confusing parameter name with string literal
  • Expecting no output
  • Thinking it causes error without return
4. Identify the error in this Go function declaration:
func multiply(a int, b int) int {
    return a * b
}

func main() {
    result := multiply(3)
    fmt.Println(result)
}
medium
A. Function multiply called with wrong number of arguments
B. Missing import for fmt package
C. Return type missing in multiply function
D. Variable result not declared

Solution

  1. Step 1: Check function call arguments

    The function multiply requires two int parameters, but it is called with only one argument 3.
  2. Step 2: Identify the error

    This causes a compile-time error due to wrong number of arguments.
  3. Final Answer:

    Function multiply called with wrong number of arguments -> Option A
  4. Quick Check:

    Function call args must match parameters [OK]
Hint: Count arguments to match parameters exactly [OK]
Common Mistakes:
  • Ignoring missing import for fmt (not shown here)
  • Thinking return type is missing
  • Assuming variable declaration error
5. Given this Go function:
func sumAndProduct(a, b int) (int, int) {
    return a + b, a * b
}

func main() {
    s, p := sumAndProduct(4, 5)
    fmt.Println(s, p)
}
What will be the output when the program runs?
hard
A. 20 9
B. 9
C. 9 20
D. Compilation error due to missing return

Solution

  1. Step 1: Understand multiple return values

    The function sumAndProduct returns two integers: sum and product of a and b.
  2. Step 2: Check values for inputs 4 and 5

    Sum is 4 + 5 = 9, product is 4 * 5 = 20. These are assigned to s and p.
  3. Step 3: Print output

    fmt.Println(s, p) prints "9 20".
  4. Final Answer:

    9 20 -> Option C
  5. Quick Check:

    Multiple returns print sum then product [OK]
Hint: Multiple returns unpacked in order [OK]
Common Mistakes:
  • Swapping sum and product values
  • Expecting single return value
  • Thinking missing return error
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