Bird
Raised Fist0
Goprogramming~10 mins

Pointer behavior in functions 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 declare a pointer to an integer variable.

Go
var x int = 10
var p [1] = &x
Drag options to blanks, or click blank then click option'
Aint
B*int
C&int
Dint*
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'int' instead of '*int' for pointer type.
Using '&int' which is not a valid type.
Using 'int*' which is not Go syntax.
2fill in blank
medium

Complete the code to modify the value of an integer through a pointer inside a function.

Go
func changeValue(n [1]) {
    *n = 20
}

func main() {
    x := 10
    changeValue(&x)
    fmt.Println(x) // Output: 20
}
Drag options to blanks, or click blank then click option'
A*int
Bint
Cint*
D&int
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'int' instead of '*int' so the function modifies a copy.
Using invalid pointer syntax like 'int*' or '&int'.
3fill in blank
hard

Fill both blanks to make the increment function modify x correctly.

Go
func increment(n [1]) {
    (*n)++
}

func main() {
    x := 5
    increment([2]x)
    fmt.Println(x) // Output: 6
}
Drag options to blanks, or click blank then click option'
Aint
B&
C*int
Dpointer
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'int' instead of '*int' in the function parameter.
Passing 'x' instead of '&x' to the function.
4fill in blank
hard

Fill both blanks to create a function that swaps two integers using pointers.

Go
func swap(a, b [1]) {
    temp := *a
    *a = *b
    *b = temp
}

func main() {
    x, y := 1, 2
    swap([2]x, &y)
    fmt.Println(x, y) // Output: 2 1
}
Drag options to blanks, or click blank then click option'
A*int
B&
Cint
Dpointer
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'int' instead of '*int' for parameters.
Passing variables directly instead of their addresses.
5fill in blank
hard

Fill all three blanks to create a function that doubles the value of an integer using a pointer and returns the new value.

Go
func doubleValue(n [1]) [2] {
    *n = *n * 2
    return [3]
}

func main() {
    x := 7
    result := doubleValue(&x)
    fmt.Println(result, x) // Output: 14 14
}
Drag options to blanks, or click blank then click option'
A*int
Bint
C*n
Dn
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'int' instead of '*int' for the parameter.
Returning the pointer variable instead of the dereferenced value.
Using wrong return type.

Practice

(1/5)
1. What does passing a pointer to a function in Go allow you to do?
easy
A. Automatically convert the variable to a string
B. Create a copy of the variable that cannot be changed
C. Modify the original variable's value inside the function
D. Prevent the function from accessing the variable

Solution

  1. Step 1: Understand pointer passing

    Passing a pointer sends the address of the variable, not a copy.
  2. Step 2: Effect on original variable

    Inside the function, using the pointer lets you change the original variable's value.
  3. Final Answer:

    Modify the original variable's value inside the function -> Option C
  4. Quick Check:

    Pointer lets function change original variable [OK]
Hint: Pointers let functions change original variables directly [OK]
Common Mistakes:
  • Thinking pointers create copies instead of referencing original
  • Confusing pointer with value passing
  • Assuming pointers prevent modification
2. Which of the following is the correct way to declare a function that takes a pointer to an int in Go?
easy
A. func updateValue(val *int) {}
B. func updateValue(val int) {}
C. func updateValue(*val int) {}
D. func updateValue(&val int) {}

Solution

  1. Step 1: Recall pointer syntax in function parameters

    In Go, a pointer parameter is declared with * before the type, like *int.
  2. Step 2: Check each option

    func updateValue(val *int) {} correctly uses *int as the parameter type.
  3. Final Answer:

    func updateValue(val *int) {} -> Option A
  4. Quick Check:

    Pointer parameter syntax = *type [OK]
Hint: Pointer parameters use * before type, not variable name [OK]
Common Mistakes:
  • Placing * before variable name instead of type
  • Using & in parameter declaration
  • Omitting * for pointer type
3. What will be the output of this Go program?
package main
import "fmt"
func change(val *int) {
    *val = 10
}
func main() {
    x := 5
    change(&x)
    fmt.Println(x)
}
medium
A. 5
B. 10
C. 0
D. Compilation error

Solution

  1. Step 1: Understand pointer usage in change function

    The function receives a pointer to x and sets the value at that address to 10.
  2. Step 2: Trace main function execution

    x starts as 5, change(&x) updates x to 10, then fmt.Println prints x.
  3. Final Answer:

    10 -> Option B
  4. Quick Check:

    Pointer lets function update x to 10 [OK]
Hint: Pointer lets function change original variable value [OK]
Common Mistakes:
  • Expecting original value 5 to print
  • Confusing pointer dereference syntax
  • Thinking function works without & operator
4. Identify the error in this Go code snippet:
func update(val *int) {
    val = 20
}

func main() {
    x := 5
    update(&x)
    fmt.Println(x)
}
medium
A. Cannot assign int to pointer variable directly
B. Missing & operator when calling update
C. Function update should return int
D. x is not initialized

Solution

  1. Step 1: Analyze assignment inside update function

    val is a pointer to int, but val = 20 tries to assign int to pointer variable, which is invalid.
  2. Step 2: Correct way to change value via pointer

    Use *val = 20 to assign 20 to the value pointed by val.
  3. Final Answer:

    Cannot assign int to pointer variable directly -> Option A
  4. Quick Check:

    Assign to *val, not val [OK]
Hint: Assign to *pointer, not pointer variable itself [OK]
Common Mistakes:
  • Assigning value directly to pointer variable
  • Forgetting to dereference pointer
  • Confusing pointer and value types
5. Given this Go code, what will be the output?
package main
import "fmt"
func swap(a, b *int) {
    *a, *b = *b, *a
}
func main() {
    x, y := 1, 2
    swap(&x, &y)
    fmt.Println(x, y)
}
hard
A. Compilation error
B. 1 2
C. 0 0
D. 2 1

Solution

  1. Step 1: Understand swap function behavior

    swap takes pointers to two ints and swaps their values using pointer dereferencing.
  2. Step 2: Trace main function execution

    x=1, y=2 initially; swap(&x, &y) swaps values, so x becomes 2 and y becomes 1.
  3. Final Answer:

    2 1 -> Option D
  4. Quick Check:

    Pointer swap exchanges values correctly [OK]
Hint: Swap values by dereferencing pointers [OK]
Common Mistakes:
  • Expecting original order after swap
  • Confusing pointer addresses with values
  • Not using * to dereference pointers
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