Skip to content

Go Pointers Cheat Sheet

Pointers in Go are powerful tools for working with memory addresses. They allow you to directly manipulate data, create dynamic data structures, and improve program performance. While they offer flexibility, understanding them is crucial to avoid potential pitfalls. Let’s dive into the key aspects of pointers in Go:

  1. Declaring: Use the * symbol before the data type to declare a pointer variable.
    var p *int
  2. Initializing: You can initialize pointers to:
    • nil: Indicates no memory address is currently assigned.
    p = nil
    • The address of another variable using the & operator.
    i := 42
    p = &i
  1. Use the * operator to access the value stored at the memory address pointed to by the pointer.
    value := *p // Dereference p to access the value of i (42)
    Caution: Dereferencing a nil pointer leads to a panic.
  1. nil represents the absence of a valid memory address.
  2. Always check if a pointer is nil before dereferencing it to avoid panics.
    if p == nil {
    fmt.Println("p is nil, cannot dereference")
    return
    }
  1. You can pass pointers to functions to:
    • Modify the original value (pass by reference).
    func increment(x *int) {
    *x++
    }
  2. Pass by value is the default behavior if you don’t use a pointer.
  1. When passing a pointer to a function, any changes made to the dereferenced value affect the original variable.
    i := 10
    increment(&i) // Modifies the original value of i
    fmt.Println(i) // Output: 11

Remember, pointers are powerful but require careful handling. Use them judiciously and always check for nil before dereferencing. Happy coding!