Returning a pointer to a struct means that the struct does not get copied.
Go has two modes of passing data two and from functions:
By value. Here, the data is copied when it gets passed to a function or is returned from a function. If the receiver manipulates the received copy, the original data remains unaltered.
By reference. In this case, only a pointer to the data is passed to a function, or returned from it. If the receiver manipulates the data, it manipulates the original data.
Here is a video that visualizes the essence of pointers. (Tip: ensure to watch the video rather than only reading the text below the video. This text is only the transcript. The video adds visual explanations that go beyond what text can express.)