Ron Mount
так то
Андрей
Каким будет результат выполнения кода? @golangtests
Весь секрет в анонимной функции?
Andrey
Вы такие гении, присваиете 1 в коде, и при это дефером увеличивает переменную, и не понимаете, кто что сделал 🤣
Evgeny
Весь секрет в анонимной функции?
нет, в том что там возвращаемое именованное
Evgeny
он правит значение в регистре что ли прямо
Evgeny
я последний раз импорт руками писал лет двенадцать назад))
Ron Mount
Yuriy
:D
То чувство, когда ты уже вернул значение, но еще можешь его менять...
Ron Mount
да иди ты нахуй козёл
Viktor
То чувство, когда ты уже вернул значение, но еще можешь его менять...
То чувство, когда ты не определился, что хочешь вернуть))
Yuriy
То чувство, когда ты не определился, что хочешь вернуть))
хм.. дай-ка подумать )) package main import ( "fmt" "time" ) func test() (x int) { defer func() { time.Sleep(3 * time.Second) x++ }() x = 1 fmt.Println("Я уже все") return x } func main() { fmt.Println(test()) }
Herman
типы указателей нельзя встраивать
Anonymous
и почему?
Anonymous
а как понять какй встраеваемый?
Anonymous
объясни плиз почему
Anonymous
а, типа H это *G, *G мы можем встраивать а K это другой тип, который тип указателя, его не можем
Daniil
А разве дефер не запоминает значения переменных до его вызова?
Defer вычисляет аргументы отложенной функции в момент использования defer. x - не аргумент функции.
Ron Mount
Maks
В джаве точки с запятой нужны были что бы делить логические блоки. Они могли быть многострочными. Это для компилятора важно. Так во многих языках. В го точка с запятой используется для тех же целей. Но компилятор го более привередливый к синтаксису. Он говорит что новая строка это новый логический блок. Это позволило отказаться от точки с запятой. А так как новая строка это новая команда условно говоря, это заставляет разработчика писать более читаемый код
Maks
Я так вижу
Ron Mount
умер
Oleg
в свете блокировок github подумал, может не тянуть зависимости с github, а клонировать их к себе в проект не считая паранойи, насколько эта практика хороша? какие проблемы встречаются? пути их решения?
Oleg
что вендор?
Oleg
бог его знает, но если в какой-то момент проект перестанет собираться - будет обидно
Maks
Вообще для этого есть специальный инструмент в компаниях
Oleg
я новичёк, не знаю что это видать, нужно ознакомиться
Maks
забыл правда как зовется
Maks
тулза
Maks
в докере разворачивается и через нее всё тащится
Maks
даже линукс зависимости
Grigorij
что то типо хранилища артефактов?
Maks
нексус нажывается
Maks
это как вариант
Maks
его вроде много где используют
Maks
может еще какие есть, но как пример можно посмотреть
Grigorij
угу, есть такой
Maks
в локальной разработке конечно не покатит
Maks
для себя
Oleg
go mod vendor - скопировал репозитории 👍🏼
Alexander
много пакетов есть у go, авторы которых крупные(которые могут попасть под санкции) компании из рф?
согласен. по сути проблема только с опенсорсом может быть относящимся к крупным рф компаниям. ну свой-то проект явно должен быть где-то кроме гитхаба
Alexander
вообще, надеюсь не столкнемся с отменой русского опенсорса как с отменой русской культуры, эх
Maks
Ну это опять же только для проектов которые где то в компании. Дома у тебя вряд ли будет фултайм поддерживаемая прокся на долгие годы
Maks
ну да, дома впн хватит по сути)
kostyaBro
А разве дефер не запоминает значения переменных до его вызова?
Дефер просто вызывается после окончания функции. Вроде с зажержкой 50нс
Maks
У дефера есть некоторые фишки еще
Dmitriy
Подскажите, плиз. Учусь собирать docker образ. Сервис на локальном компе собирается и отлично работает. Образ тоже собирается без ошибок. Но при запуске возникает ошибка: «Environment didn't load: open .env: no such file or directory» Команда для запуска в Makefile docker run --name hermes -p 8000:80 --env-file .env hermes-server:v0.1 В Docker Desktop записанные в .env файле переменные отображаются на вкладке Inspect в созданном, но остановленном контейнере. Что я делаю не так? Куда копать? Использую Mac и VSCode (на всякий случай)
Квадрат🇺🇦
он же не внутри контейнера должен быть, а его docker cli читает
Квадрат🇺🇦
как бы снаружи
Dmitriy
ну если бы он отсуствовал, то, видимо, не запустилось бы приложение на локальном компе?
Dmitriy
судя по Docker Desktop они присуствуют
Dmitriy
где мейкфайл лежит?
в корне проекта
Dmitriy
там же и .env
Anonymous
Квадрат🇺🇦
оттуда и запускаешь, да?
Anonymous
да и прописывать нудно
John
это не безопасно
если у тебя есть возможно подсмотреть команду, то у тебя есть возможноть подстмотреть и файл
Dmitriy
ls -al | grep .env
dmitriy@MacBook-Pro-Dmitriy Hermes % ls -al | grep .env -rw-r--r-- 1 dmitriy staff 75 18 апр 18:22 .env
Anonymous
а, я понял похоже
Dmitriy
оттуда и запускаешь, да?
ну локально, из корневой директории проекта. А в докере - как написал в команде
Anonymous
попробуй полный путь укажи
Anonymous
и я один момент не понял запускается на локалке все норм и след предложение -> но при запуске возникает ошибка
Anonymous
при запуске возникает ошибка на другом хосте?
Dmitriy
при запуске локально cmd/main.go - все нормально. При запуске Контейнера докера - вижу ошибку. Если что, контейнер на первом шаге сборки - 1.17.9-alpine
Anonymous
разные точки входа
Anonymous
go run cmd/main.go
Anonymous
и в каталоге(cmd/ go run main.go)
Anonymous
это две разные вещи
Dmitriy
попробуй так docker run --name hermes -p 8000:80 hermes-server:v0.1 -e PH_HOST=localhost -e PH_PORT=5432
dmitriy@MacBook-Pro-Dmitriy Hermes % docker run --name hermes -p 8000:80 hermes-server:v0.1 -e PH_HOST=localhost -e PH_PORT=5432 docker: Error response from daemon: failed to create shim: OCI runtime create failed: container_linux.go:380: starting container process caused: exec: "-e": executable file not found in $PATH: unknown. ERRO[0000] error waiting for container: context canceled
Dmitriy
и в каталоге(cmd/ go run main.go)
А из чего следует, что «cmd/ go run main.go» выполняется?
Anonymous
не понял, что ты имеешь ввиду, но попытаюсь ответить
Anonymous
├── cmd │ └── main.go └── env первый кейс: go run cmd/main.go тут программа отрабатывает потому что запуск идет не от папки cmd, а грубо говоря от верхнего каталога относительно cmd(../cmd)
Anonymous
и второй кейс: когда ты запускаешь(и при этом находишься в cmd) go run main.go
Anonymous
тут точка входа не понимает где искать env файл
Anonymous
скинь докерфайл