Golang pointers explained, once and for all