Maks
и сильно сомневаться стал что человек пол века в разработке
Игроман
GOMOD=/dev/null.
🔥
Maks
концепцию языка не понял, начинает залечивать про какие то помойки папки го, про один файл со всем кодом
Maks
чево
Игроман
🔥
Игроман
Это из вывода go env
🔥
Это весь вывод?)
Игроман
Нет, не весь. Но я пишу с телефона, а не с компа
Игроман
Я вот неделю пытаюсь разобраться. Мне бы очень помог какой-нибудь примерчик кода с несколькими go-файлами внутри папки проги.
Таршиш
debian
Таршиш
?
Таршиш
У меня под debian какие-то заморочки с правами
Игроман
Ubuntu
Таршиш
Вот было бы интересно узнать, много ли народу тут сидят на винде. IMHO тут разговор между виндушником и линусятником
Dmitry
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 с указанием сразу двух файлов из пакета мейн
Dmitry
Игроман
Игроман
Dmitry
смотри на импорт в main.go и как оформлен код в папке /internal/app/apiserver/
Dmitry
остальное вне рамок твоего вопроса.
Игроман
Dmitry
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 да?
Maks
George
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
почему зло