Про Go, go get, версии пакетов

У меня есть проект и он на golang, и, в частности, он на фреймворке Echo. Фреймворк крутой, рекомендую :)

Ставится он как и все golang пакеты с помощью команды go get:

go get github.com/labstack/echo

И тут есть интересный момент, автор проекта активно пилит версию 2.0, она еще быстрее и еще круче, и именно сегодня сломалась обратная совместимость связанная с контекстом ответа.

c.Response undefined (type *echo.Context is pointer to interface, not interface)
c.JSON undefined (type *echo.Context is pointer to interface, not interface)

Беда связана с тем, что golang не имеет пакетного менеджера, а также возможности «скачать» определенную версию с GitHub и тут приходит на помощь gopkg.in.

Необходимо заменить наш go get на следующий:

go get gopkg.in/labstack/echo.v1

И после этого в своем GOPATH вы получите версию 1.3. Данный лайфхак работает для всех либ, которые лежат на GitHub :)