🔥
https://golang.org/doc/gopath_code Вот это почитай
Konstantin
Доброе утро. Может кто подскажет, с чего начать изучать GO? Материалы какие-нибудь, ресурсы
Konstantin
С поисковика я думаю)
Спасибо, помогли
🔥
Спасибо, помогли
Всегда пожалуйста
антон
да, в гугле набиваешь книги голанг
антон
и всё
антон
потом читаешь, пишешь чонить. считай, выучил
Nikita
а может есть какая то современная книга?...а то все древние..а там как я понимаю какие то серьёзные изменения с го модулями произошли, правда я так и не понял что такое го модули)
антон
синтаксис не менялся
Null
Как в Golang работает конкурентность? За профессиональными навыками приходите 23 августа в OTUS на demo-занятие «Concurrency patterns». 👉🏻За 1,5 часа вы разберете, как применять concurrency-паттерны на практике. Пройдете паттерны синхронизации данных, функции-генераторы и пайплайн, работу с многими каналами: or, fanin, fanout, etc. Занятие является частью онлайн-курса «Golang Developer Professional» и даст вам возможность оценить уровень обучения. 🔥Для регистрации пройдите вступительный тест: https://otus.pw/lw5o/
антон
про модули прочитайте и всё
Nikita
так в том то и прикол...вот открываешь книгу..там всё по старому..как я понимаю..модули...это что то связанное с самим процессом компиляции и не понятно как было раньше , что изменилось и как нужно делать сейчас))
антон
сейчас надо добавить одну консольную команду перед работой
антон
раньше не надо было
Nikita
что то типа go mod init?
Nikita
а что означает в go mod init example.com/hello вот это example.com/hello?
антон
это если сразу хочешь на гитхабе репозиторий держать
Nikita
а если не хочу?..что туда писать?))
антон
щас так принято, чтоб на интервью было что показать
Nikita
просто можно написать go mod init hello?
антон
просто инит
Nikita
ну на интервью я не собираюсь)) я лично для себя..и вот ещё вопрос..если у меня 2 компьютера...я например писал на одном....сделал там go mod init , потом написал там хеллоуворлд, потом решил залить в гитхаб. Сделал там репозиторий залил, то чтобы работало на другой машине, я сделал git pull и на новой машине тоже нужно делать go mod init?
антон
там будет go.mod же
Nikita
вот да...файл был...
Nikita
но он вроде не запускался)
Nikita
сейчас попробую сделать тестовую..
Nikita
просто в старых книгах вообще про это ничего нет, а в статье на хабре..просто какие то настолько далекие для меня случаи, что ничего не понятно))
Nikita
то есть для того чтобы запустить проект на другом компьютере ничего не нужно делать и просто нажать ctrl+f5 в вскоде?
Nikita
но чет у меня так не получалось...и я там какую то магию делал)
𝕌ℕ𝔼𝕏ℙ𝔼ℂ𝕋𝔼𝔻
go.mod хранит в себе зависимости, и если на другой машине не хватает этой зависимости, он её должен скачать.
Nikita
откуда он может её скачать?
𝕌ℕ𝔼𝕏ℙ𝔼ℂ𝕋𝔼𝔻
откуда он может её скачать?
В go.mod лежат ссылки на используемые зависимости, как правило с github
Nikita
я не использую ничего с гитхаба))..и это только мой модуль..там fmt.Println()
𝕌ℕ𝔼𝕏ℙ𝔼ℂ𝕋𝔼𝔻
Опять же, локально я go.mod не юзаю, если планирую в Docker запускать, тогда да, пишу Dockerfile и делаю init go.mod
Nikita
так и я не знаю..и не понимаю что это...может оно мне и не нужно совсем
Nikita
везде пишут - нужно делать так)
Nikita
но почему и зачем нигде не пишут)
𝕌ℕ𝔼𝕏ℙ𝔼ℂ𝕋𝔼𝔻
так и я не знаю..и не понимаю что это...может оно мне и не нужно совсем
Если нет внешних зависимостей, то чтобы скомпилить приложение, достаточно установить Go на машину.
Nikita
так вот)
Nikita
Nikita
я даже не могу запустить то что написал..он говорит go.mod не найден
Nikita
то есть без го модулей ничего нельзя сделать
Nikita
gopath настраивается как то отдельно?..нужно что то делать кроме инсталла?
𝕌ℕ𝔼𝕏ℙ𝔼ℂ𝕋𝔼𝔻
🔥
Ты переменную что я написал настрой
𝕌ℕ𝔼𝕏ℙ𝔼ℂ𝕋𝔼𝔻
GO111MODULE=off
set GO111MODULE=off
Nikita
Nikita
там есть папки bin и pkg
𝕌ℕ𝔼𝕏ℙ𝔼ℂ𝕋𝔼𝔻
Nikita
а этот сет где нужно писать?...в launch.json?
🔥
там есть папки bin и pkg
Да говорю тебе ты переменную настрой заработает
𝕌ℕ𝔼𝕏ℙ𝔼ℂ𝕋𝔼𝔻
Chshr
Вопрос к знающим: Пакет: "os/exec" Задача: Убить процесс и все саб-процессы через context.WithTimeout(...), который передаётся в cmd := exec.CommandContext(ctx, name, args...) cmd.SysProcAttr = &syscall.SysProcAttr{Setpgid: true} if err := cmd.Run(); err != nil { if ctxErr := ctx.Err(); ctxErr != nil { if ctxErr == context.DeadlineExceeded { err = errors.New("operation timeout exceeded") } else { err = errors.New("operation canceled") } } return err } Но по истечению времени exec посылает только один сигнал kill(pid) первого процесса, но не посылает сигнала для всей группы процессов(Которая имеет идентификатор -pid, kill(pid)). Из-за этого приходится юзать трюк if killErr := syscall.Kill(-cmd.Process.Pid, syscall.SIGKILL); killErr != nil{ err = fmt.Errorf("%s, but we can't kill process err: %s", err.Error(), killErr.Error()) } Можно ли как-то избежать трюка и остаться с контекстом наедине? UPD: в офф пакете и на гхб ответа не нашёл :\
🔥
Ты переменные среды не знаешь что такое?)
Nikita
а что именно там нужно настроить?
🔥
Переменную
Nikita
так она же есть
🔥
По умолчанию модули включены
𝕌ℕ𝔼𝕏ℙ𝔼ℂ𝕋𝔼𝔻
По умолчанию модули включены
Да, но это никак не должно влиять если используются только локальные пакеты.
Nikita
.
ааа..то есть вы предлагает сделать недефолтные настройки операционной системы, вместо того чтобы инициализировать модуль?...и так придется делать на каждом компьютере где я захочу запустить свое приложение?
🔥
И ее настройки)
Nikita
переменные среды - это настройка ОС, а не программы
🔥
переменные среды - это настройка ОС, а не программы
Дядя тебе скомпилить без модулей надо, верно?)
Nikita
мне нужно строчку в консольку вывести на трех разных компах)
Nikita
и чтобы это минимально касалось ОС)
🔥
Для этого нужно выключить модули и скомпилить бинарь)
Maks
А где ?? package main import "fmt"
🔥
Компилятор читает переменную GO111MODULE и если она включена компилит с модулями)
🔥
Если нет, компилит без модулей