📖 Scenario: Imagine you are working with a simple program that needs to keep track of a number and also use a pointer to that number. Pointers are like notes that tell you where the number is stored in memory.
🎯 Goal: You will create a variable holding a number, declare a pointer to that number, and then print the pointer's value (the memory address) and the value it points to.
📋 What You'll Learn
Create an integer variable named num with the value 42.
Declare a pointer variable named ptr that points to num.
Print the value of ptr (the memory address).
Print the value stored at the address ptr points to (the value of num).
💡 Why This Matters
🌍 Real World
Pointers are used in Go to efficiently manage memory and to allow functions to modify variables outside their own scope.
💼 Career
Understanding pointers is important for Go developers working on performance-critical applications, system programming, or when interfacing with low-level code.
Progress0 / 4 steps
1
Create an integer variable
Create an integer variable called num and set it to 42.
Go
Hint
Use num := 42 to create the variable.
2
Declare a pointer to the variable
Declare a pointer variable called ptr that points to the variable num using the address operator &.
Go
Hint
Use ptr := &num to get the address of num.
3
Print the pointer value (address)
Use fmt.Println to print the value of the pointer variable ptr (the memory address). Remember to import the fmt package.
Go
Hint
Use fmt.Println(ptr) to print the pointer's address.
4
Print the value pointed to by the pointer
Use fmt.Println to print the value stored at the address ptr points to by dereferencing ptr with *ptr.
Go
Hint
Use fmt.Println(*ptr) to print the value at the pointer.
Practice
(1/5)
1. What does a pointer in Go store?
easy
A. The actual value of a variable
B. The memory address of a variable
C. The type of a variable
D. The size of a variable
Solution
Step 1: Understand what a pointer represents
A pointer does not hold the value itself but the location where the value is stored in memory.
Step 2: Recall pointer definition in Go
In Go, a pointer stores the address of a variable, not the variable's value directly.
Final Answer:
The memory address of a variable -> Option B
Quick Check:
Pointer = memory address [OK]
Hint: Pointers always hold addresses, not values [OK]
Common Mistakes:
Thinking pointers store the actual value
Confusing pointer with variable type
Assuming pointer stores variable size
2. Which of the following is the correct way to declare a pointer to an int variable named num in Go?
easy
A. var p int = &num
B. var p *int = num
C. var p *int = &num
D. var p int = *num
Solution
Step 1: Understand pointer declaration syntax
In Go, to declare a pointer to an int, use *int as the type.
Step 2: Assign the address of num to the pointer
The address operator & gets the memory address of num, which can be assigned to the pointer.
Final Answer:
var p *int = &num -> Option C
Quick Check:
Pointer declaration uses *type and &variable [OK]
Hint: Pointer type uses * before type, assign with &variable [OK]
Common Mistakes:
Forgetting the * in pointer type
Assigning variable value instead of address
Using *num instead of &num for assignment
3. What will be the output of this Go program?
package main
import "fmt"
func main() {
x := 10
p := &x
*p = 20
fmt.Println(x)
}
medium
A. 20
B. 10
C. Memory address of x
D. Compilation error
Solution
Step 1: Understand pointer assignment and dereferencing
Variable p stores the address of x. Using *p = 20 changes the value at that address.
Step 2: Check the effect on x
Since p points to x, changing *p changes x to 20.
Final Answer:
20 -> Option A
Quick Check:
Dereferencing pointer changes original variable [OK]
Hint: Changing *p changes the original variable [OK]
Common Mistakes:
Thinking *p creates a new variable
Expecting output to be address instead of value
Confusing pointer declaration with dereferencing
4. Identify the error in this Go code snippet:
var a int = 5
var p *int = a
fmt.Println(*p)
medium
A. Cannot assign int to *int without & operator
B. Cannot print pointer value with * operator
C. Variable a must be a pointer
D. Missing import fmt
Solution
Step 1: Check pointer assignment rules
Pointer variables must be assigned the address of a variable, not the variable's value.
Step 2: Identify missing & operator
Assigning a directly to p is invalid; it should be p = &a.
Final Answer:
Cannot assign int to *int without & operator -> Option A
Quick Check:
Pointer assignment needs &variable [OK]
Hint: Use & to assign address to pointer variables [OK]