Как создать библиотеку для приложения?
Например функции user.go должны лежать в lib и вызываться через: type User struct{}
Реализация через пакеты не подходит. Т.к. библиотека становится полностью глобальной и теряет область видимости стандартных функции.
Просто так из src/app/user.go, я не могу положить в src/app/lib/user.go. Т.к. возникают проблемы при компиляции, иными словами go build не видит директорию lib
У вас в вопросе перемешаны понятия директории, библиотеки и пакета. Что в итоге вам нужно? То, что "возникают проблемы при компиляции" так вы не импортировали пакет. Что значит "библиотека становится полностью глобальной" и чем это плохо для вас?
Никита: раньше user.go был как пакет и собирался через go install, и клался в pkg. Но он не видел например такие константы, как ConntectDBSql и прочие. Позже я просто взял и положил этот файл в свой проект в корневую директорию. Проблемы с областью видимости были решены, но мне не нравится, что если у меня будет таких файлов как: user.go, app.go, alias.go, template.go и т.п. будет +100500, и они будут лежать все в корневой директории, это будет вызывать ряд проблем при разработке и контроле версий.
Никита: вот вопрос, если не вдумываться в детали и не предлагать свои идеи. Как создать под-папку рядышком с файлом main.go. Назвать её lib и положить туда скажем response.go. Далее вызвать команду go build или подобную, чтобы всё заработало. Проблема в том, что go build не видит директорию lib.
Что за ConntectDBSql ? Что за pkg?
Зачем отдельному пакету (на сколько я вас понял) видеть что творится в других пакетах, в том же main например? Тогда зачем вообще пакты нужны? Вы об этом не думали?
Если хотите передать что-то в функцию, которая лежит где-то в другом пакете, значит эта функция должна принимать соответствующий аргумент.
Константы запихните в директорию (пакет), например, constants, это если хотите чтобы их все видели и импортируйте спокойно.
Никита: вот именно, что надо создать 100500 аргументов для каждой переменой. Вопрос вообще другой был, блин. Как создать папку в корневой директории положить туда файл user.go и запустить по возможности go build или такую команду которая позволяла бы скомпилировать всю корневую директорию с под-папками.
teub74: "то есть без go install не обойтись" В смысле? go build тоже соберёт приложение, только в локальную папку.
"В любом случает пакет создавать?" Так вы сами хотите создать пакет lib, что за вопрос?
Повторюсь - вы путаете понятия директории, библиотеки и пакета. Откройте документацию. https://golang.org/doc/code.html