Go – Pointers & Memory
Estimated reading: 3 minutes 26 views

🧮 Go Array of Pointers – Efficiently Manage References in Arrays (2025 Guide)

🧲 Introduction – What Is an Array of Pointers in Go?

In Go, an array of pointers is a collection where each element is a pointer to a value rather than the value itself. This allows efficient memory use, in-place modification, and shared references, especially useful with structs, large data, or dynamic behavior simulations.

🎯 In this section, you’ll learn:

  • How to declare and initialize an array of pointers
  • How to access and modify values through pointers
  • Real-world use cases like struct referencing
  • Best practices and memory tips

✅ Declare an Array of Pointers

var arr [3]*int

✅ This declares an array of three pointers to integers.


🧪 Initialize an Array of Pointers

a, b, c := 10, 20, 30
arr := [3]*int{&a, &b, &c}

fmt.Println(*arr[0], *arr[1], *arr[2]) // Output: 10 20 30

✅ Each element points to an integer. *arr[i] gives the value at that address.


🔁 Update Values via Pointers in the Array

*arr[1] = 99
fmt.Println(b)  // Output: 99

✅ Changing through the pointer updates the original variable.


📦 Example – Array of Struct Pointers

type User struct {
    Name string
}

u1 := User{"Alice"}
u2 := User{"Bob"}
u3 := User{"Charlie"}

users := [3]*User{&u1, &u2, &u3}

for _, u := range users {
    fmt.Println(u.Name)
}

📤 Output:

Alice  
Bob  
Charlie

✅ This is common in object referencing, entity tracking, and dynamic updates.


🛠️ Modify Structs via Pointers in Array

users[0].Name = "Alicia"
fmt.Println(u1.Name)  // Output: Alicia

✅ Changes to the struct pointer affect the original object.


🔄 Loop with Indexing

for i := range arr {
    *arr[i] += 1
}

✅ Modify each pointed-to value inside the array.


⚖️ Array of Pointers vs Pointer to Array

ConceptSyntaxMeaning
Array of pointers[3]*intEach element is a pointer to a value
Pointer to array*[3]intA single pointer to the entire array

🧠 Best Practices

  • ✅ Use array of pointers when you need to share and modify original data
  • ✅ Always check for nil before dereferencing (if arr[i] != nil)
  • ❌ Avoid overusing if simple slices or arrays suffice
  • ✅ Ideal for structs, linked data, tree nodes, etc.

📌 Summary – Recap & Next Steps

Arrays of pointers in Go are useful for managing shared references and enabling in-place modification of underlying data. They help reduce memory usage and increase flexibility in complex data structures.

🔍 Key Takeaways:

  • [*T] stores addresses, not values
  • Use *arr[i] to access or update values
  • Great for working with structs and large values
  • Don’t confuse with pointer to an array (*[N]T)

⚙️ Next: Explore Slices of Pointers or Pointers to Structs in Functions.


❓ FAQs – Go Array of Pointers

❓ What is an array of pointers in Go?
✅ An array where each element stores the address of a value, not the value itself.

❓ How do I access the value from an array of pointers?
✅ Use dereferencing: *arr[i].

❓ Is it safe to store struct pointers in an array?
✅ Yes. It’s commonly used for shared data and in-place updates.

❓ Can I modify the original value through the pointer array?
✅ Absolutely. You’re working with the actual memory address.

❓ What’s the difference between [*T] and *[N]T?
[*T] is an array of pointers. *[N]T is a pointer to an array of values.


Share Now :

Leave a Reply

Your email address will not be published. Required fields are marked *

Share

Go Array of Pointers

Or Copy Link

CONTENTS
Scroll to Top