Go Pointers to Struct
In Go, pointers can be used to reference a struct. This allows you to modify the contents of the struct even if it is passed as a parameter to a function.
Here's an example of how to declare and use a pointer to a struct in Go:
type Person struct {
name string
age int
}
func main() {
// Declare a pointer to a Person struct
var p *Person
// Allocate memory for the struct and assign it to the pointer
p = &Person{name: "John", age: 30}
// Access the fields of the struct through the pointer
fmt.Println((*p).name, (*p).age)
// Alternatively, you can use the shorthand syntax to access fields through a pointer
fmt.Println(p.name, p.age)
// Pass the pointer to a function that modifies the struct
modifyPerson(p)
// Print the modified struct
fmt.Println(p.name, p.age)
}
func modifyPerson(p *Person) {
// Modify the fields of the struct through the pointer
p.name = "Jane"
p.age = 25
}
In this example, a struct Person is defined with two fields: name and age. A pointer to a Person struct is declared with var p *Person, and memory is allocated for the struct and assigned to the pointer with p = &Person{name: "John", age: 30}.
The modifyPerson function accepts a pointer to a Person struct and modifies the values of the name and age fields.
In the main function, the fields of the struct are accessed through the pointer using the (*p).name and (*p).age syntax, or the shorthand syntax p.name and p.age. The modifyPerson function is then called with the pointer, and the modified values are printed to the console.
