Presenting Go-Up

Today I have started development of new package for Golang-developers – Go-Up. I made it because I have noticed that I should repeat some things with each new project on Golang, so the main purpose of Go-Up package is to simplify building of new Golang applications.

This is a beginning so I just want to share link to GitHub here – https://github.com/ildarusmanov/go-up

Golang: пакеты

По поводу пакетов в голанге есть множество статей и ресурсов, например – https://thenewstack.io/understanding-golang-packages/. Но лично у меня в самом начале изучения этого языка прграммирования возникли две проблемы:

  1. Как использовать пакеты внутри совего приложения для разделения кода(что-то вроде namespace в других языках);
  2. Ошибка цикличного импорта пакетов.

Первый вопрос снимается легко, допустим у нас в проекте с названием project7(директория /go/src/project7) есть модели и контроллеры в соответствующих директориях(models и controllers), тогда мы можем их использовать в нашем главном файле main.go вот так:


То есть, по сути мы просто используем их как локальный неймспейс, все очень просто.

Проблема циклических импортов возникает, когда вы ипортируете пакет, который импортирует пакет из которого вы производите импорт.

Т.е. получается, что вы попадаете в бесконечный цикл импорта, так как оба пакета импортируют друг друга.

Избежать этой проблемы легко – используйте интерфейсы.