Так вроде так все и было или я что то пропустил? Как вариант Вы можете создать свой тип ошибки
type SyntaxError struct { Line int Col int } func (e *SyntaxError) Error() string { return fmt.Sprintf("%d:%d: syntax error", e.Line, e.Col) }
В таком случае советую тебе зайти на сайт qolang-blog.blogpost, там полгода назад была выложена статья на тему «Работа с ошибками в Go 1.13», в которой как раз таки рассматриваются новые способы обработки ошибок.