I have the following function which is supposed to retrieve a single row from my ideas table:
func (s *IdeaService) GetIdea(id int64) (*ideaservice.Idea, error) {
stmt, err := s.DB.Prepare("SELECT id, name, description, created_on, last_updated FROM ideas WHERE id = $1")
if err != nil {
return nil, err
}
defer stmt.Close()
var idea *ideaservice.Idea
err = stmt.QueryRow(id).Scan(&idea.ID, &idea.Name, &idea.Description, &idea.CreatedOn, &idea.LastUpdated)
return idea, err
}
When i run this in a test, the following error occurs:
--- FAIL: TestGetIdea (0.00s)
panic: runtime error: invalid memory address or nil pointer dereference [recovered]
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x65be98]
I can't seem to figure out the problem. I believe I have instantiated the idea var correctly as a pointer, which I then assign values to in the Scan method. Does anyone have any suggestions?