Maks
и сильно сомневаться стал что человек пол века в разработке
Игроман
GOMOD=/dev/null.
Maks
концепцию языка не понял, начинает залечивать про какие то помойки папки го, про один файл со всем кодом
Maks
чево
Игроман
🔥
GOMOD=/dev/null.
Что это?)
Игроман
Это из вывода go env
🔥
Это весь вывод?)
Игроман
Нет, не весь. Но я пишу с телефона, а не с компа
Игроман
Я вот неделю пытаюсь разобраться. Мне бы очень помог какой-нибудь примерчик кода с несколькими go-файлами внутри папки проги.
Таршиш
debian
Таршиш
?
Таршиш
У меня под debian какие-то заморочки с правами
Игроман
Ubuntu
Таршиш
Вот было бы интересно узнать, много ли народу тут сидят на винде. IMHO тут разговор между виндушником и линусятником
Maks
Короче. У тебя есть go для cli (консоль) то есть у тебя го установлен, и команды типа go run go build работают. Что бы создать проект - ты просто создаешь папку и в ней создаешь уже файлы .go .env еще какие то, структуру проекта строишь вся фигня. Ты можешь инициализировать модуль, написать команду go mod init <имя проекта или репозитория проекта>
Maks
А ну у тебя пробелма другая. Я помню сталкивался с этим.
Maks
Смотри
Maks
у тебя есть 2 файла. Они оба в пакете мейн.
Maks
и вроде ИДЕ говорит что всё ок, но компилятор и билдер ругается
Maks
при вызове просто go run myApp.go
Maks
говорит что не находит функцию из myServer.go
Maks
для того что бы тебе запустить и всё отработало, тебе нужно будет вызвать go run с указанием сразу двух файлов из пакета мейн
Таршиш
Я вот неделю пытаюсь разобраться. Мне бы очень помог какой-нибудь примерчик кода с несколькими go-файлами внутри папки проги.
У меня был похожий вопрос. Как обычно в доках ничего на эту тему не обнаружил. Поступил следующим образом: пошел на github и стал смотреть там примеры програм. Короче, пока нашел лишь такие проги, где вся программа в одном gо-файле (если только это не проект типа модуля!). Короче, пришел к выводу, что да, писать всю прогу нужно в одном файле.
Игроман
Вот посмотри как оформляется проект, особенно стотри на импорт https://github.com/gopherschool/http-rest-api
Там есть Makefile. Каким инструментом его готовить? Писать ручками?
Dmitry
Там есть Makefile. Каким инструментом его готовить? Писать ручками?
Makefile это вкусовщина автора, создавать его руками но можно и без него
Dmitry
смотри на импорт в main.go и как оформлен код в папке /internal/app/apiserver/
Dmitry
остальное вне рамок твоего вопроса.
Игроман
У меня был похожий вопрос. Как обычно в доках ничего на эту тему не обнаружил. Поступил следующим образом: пошел на github и стал смотреть там примеры програм. Короче, пока нашел лишь такие проги, где вся программа в одном gо-файле (если только это не проект типа модуля!). Короче, пришел к выводу, что да, писать всю прогу нужно в одном файле.
Все равно даже с указанием двух файлов не компилит. Ругается на отсутствие модуля. Примеров многофайловой проги на гитхабе тоже не обнаружил. Прислать работающий пример здесь мне тоже никто не хочет. Доки молчат. Даже не знаю куда рыть.
xasai.denet
Я попробую. Во-первых, в го - пакетом является все файлы .go в одной данной директории. Если в этой директории есть другая папка с другими .go файлами, то это уже другой пакет.(имя пакета определяется по директиве package) Изначально создатели go принудительно заставляли класть весь соурс код в $GOROOT путь. Но сейчас есть новая фича 'модули'. Ты можешь инициализировать один модуль командой go mod init <любое имя> и разместить все разные пакеты по разным папкам. После чего тебе надо будет сделать go run main.go , либо go build ./... (Найдет и соберет все файлы в бинарник)
xasai.denet
Забыл сказать, что тебе нужно будет импортировать в твой сервер математику вот так - <то имя которое дал модулю><путь до пакета математики>
xasai.denet
Кидай сюда ошибку, так непонятно что ты сделал не правильно, либо я тебе что-то не так объяснил
xasai.denet
И еще покажи выполненную команду ls -R в корне проекта
Игроман
xasai.denet
Ну пакет 'test' ты не создал, а ты его пытаешь имортировать. (имя пакета определяется по директиве package)
Игроман
А из консоли (без IDE) пакет можно создать?
Игроман
Пробовал уже. Получил сообщение, что модуль уже существует
Игроман
Как теперь удалить созданный этой командой модуль?
Игроман
Удалил. По идее, теперь проект должен перестать компилиться. Однако он теперь компилится. В чём тогда был смысл команды "go mod init"?
Игроман
То есть если я не создам модуль, он будет у меня автоматом создан в GOROOT?
Игроман
Пока непонятно. Ладно, позже пойму. Сейчас пока ищу, какой модуль использовать чтобы запустить обработку клиентского соединения в отдельном потоке. Надо искать что-нибудь словом "thread"
xasai.denet
горутина
George
Лол
Игроман
Я уже понял: go proccessConnection(connection)
Игроман
Спасибо
George
Важно понимать что горутина - не поток (thread). Эта абстракция существует лишь в го рантайме, операционка про них не знает.
George
Ну, в целом важно для го программиста. Если вам го нужен как альтернатива скриптовому языку - то может и фиг с ним
Игроман
В "go help build" говорится, что. tags deprecated. А что взамен? Опции компиляции какие-нибудь есть? Вот, например, в моём примере я хочу сделать опцию, позволяющую включать/выключать вывод "hello"/"bye" при каждом открытии/закрытии соединения. Как принято подобные вещи делать в Go?
Игроман
Какой-нибудь файл конфигурации генерить или есть более простые решения?
Игроман
Нет. Переменных окружения это плохо. Тогда уж лучше через параметры командной строки. Жаль, что при компиляции нельзя.
Игроман
В моей ситуации это головная боль. Параметры командной строки -- это более приемлемо
Игроман
os.Args да?
Игроман
ответ не поступил же) Чем плохи переменные окружения?
Неважно. В моей конторе это не принято. Не прижились. Скрытая проблема. Никогда глядя на экран не понять, в каком режиме сервер работает. Заказчик всегда прав.
George
если не через тэги - то через ldflags -X
Игроман
...пишет что флаги должны иметь расширение .go. 😊
Игроман
-ldflags="-A -B"
Игроман
Ругается
Maks
Кто с шарпом работал, ну еще в других языка есть
Maks
такая штука есть
George
прочитайте источник внимательно
Maks
типо параметров сборки
Maks
дефайны
George
Ругается
-X. Постарайтесь хоть, выж не бухгалтерша, которая "что-то нажала и теперь не работает"
Maks
грубо говоря #IF OS===ADNROID dataProvider = androidDataProvider #ELSE dataProvider = defaultDatProvider #ENDIF
Maks
есть ли что то подобное в го?
Игроман
дефайны
Можно дефайны можно параметры командной строки
George
макросы зло
George
именно поэтому их нет в го
Maks
почему зло