×

Go Tutorial

Go Basics

Go Variables

Go Literals

Go Type Handling

Go Operators

Go Decision Making

Go Loops

Go Functions

Go String

Go Arrays

Go Structures

Go Slices

Go Maps

Go Pointers

Golang Reference

Golang Programs

Golang Practice

Golang Miscellaneous

Go Pointer to a Struct

Last Updated : July 17, 2025

In Go, you can create a pointer to a struct to access or modify its fields without copying the entire struct.

Creating a Pointer to a Struct

You can create a pointer to a struct using the address-of operator & or by using the new function.

Example: Using & operator

The following example demonstrates how to access struct fields using a pointer without explicit dereferencing in Go:

package main
import "fmt"

type Book struct {
    title  string
    author string
}

func main() {
    b := Book{title: "Go Basics", author: "Vishnu"}
    ptr := &b

    fmt.Println("Title:", ptr.title)
    fmt.Println("Author:", ptr.author)
}

When executed, this program outputs:

Title: Go Basics
Author: Vishnu

You can access struct fields directly using the pointer without explicitly dereferencing.

Example: Using new()

The following example demonstrates how to create a pointer to a struct using the new function and access its fields in Go:

package main
import "fmt"

type Book struct {
    title string
}

func main() {
    ptr := new(Book)
    ptr.title = "Learning Go"
    fmt.Println("Book title:", ptr.title)
}

Output:

Book title: Learning Go

Modifying Struct Fields via Pointer

You can modify struct fields via a pointer, and the changes will affect the original struct.

Example

The following example demonstrates how to modify a struct's field by passing a pointer to the struct into a function in Go:

package main
import "fmt"

type Student struct {
    name string
    age  int
}

func updateAge(s *Student, newAge int) {
    s.age = newAge
}

func main() {
    st := Student{name: "Neha", age: 20}
    updateAge(&st, 25)
    fmt.Println("Updated Age:", st.age)
}

When executed, this program outputs:

Updated Age: 25

Function Returning Pointer to Struct

Functions can return a pointer to a struct. This allows dynamic creation and initialization.

Example

The following example demonstrates how to return a pointer to a struct from a function in Go:

package main
import "fmt"

type Car struct {
    brand string
    year  int
}

func newCar(brand string, year int) *Car {
    return &Car{brand: brand, year: year}
}

func main() {
    c := newCar("BMW", 2022)
    fmt.Println("Car:", c.brand, "-", c.year)
}

Output:

Car: BMW - 2022

Nil Pointer to Struct

A pointer to a struct can be nil. You must check for nil before accessing fields to avoid runtime errors.

Example

The following example demonstrates how to safely handle nil pointers when working with structs:

package main
import "fmt"

type Employee struct {
    name string
}

func printName(e *Employee) {
    if e == nil {
        fmt.Println("Invalid employee")
        return
    }
    fmt.Println("Employee name:", e.name)
}

func main() {
    var emp *Employee
    printName(emp)
}

Output:

Invalid employee

Exercise

Choose the correct answers to test your understanding of pointers to structs in Go.

  1. How do you create a pointer to a struct value p?
  2. Which keyword can be used to allocate and return a pointer to a struct?
  3. How do you access a field in a struct pointer ptr?

Advertisement
Advertisement


Comments and Discussions!

Load comments ↻


Advertisement
Advertisement
Advertisement

Copyright © 2025 www.includehelp.com. All rights reserved.