Size: a a a

2020 February 25

К🇦

Коала 🇦🇺 in Go-go!
Коала 🇦🇺
да, я уже понял, а как дедлоки включить в Goland?
а по этому вопросу подскажете?
источник

RC

Roman Covanyan in Go-go!
Aikidos
подтверждаю
пишу на шарпах, в основном, и в DAL есть как т.н. микро-ормки, так и всякие огромные Entity Framework'и
хз откуда этот хейт.
на совсем сложные запросы пишу raw
хейт от непонимания сути орм и какие задачи он должен решать. иногда просто нет опыта поддержки изменений в бизнес-функциях, когда надо быстро поменять модели сущностей в бизнес области и переписать все связанные с этим куски кода. вот в этих случаях спасают концепции орм, когда весь код так или иначе соотносится с моделями. любители делать нативные запросы в такие моменты просто стреляются, т.к. надо найти все запросы и исправить их, одновременно с правкой бизнес-логики.
источник

АП

Александр Попов in Go-go!
вы все стреляете?
источник

NP

Nikita Provotorov in Go-go!
Stanislav N.
Почитать про пакетные менеджеры и структуру приложения, ибо вы либо что-то делаете не так, либо криво объясняете
да, я дуралей, не залил один из подпакетов в репозиторий, из-за этого go get его и пытался подтянуть
источник

VT

Vasiliy Toporov in Go-go!
Здравствуйте. Есть вопрос по интеграции cobra  в существующий проект. У меня есть сервис, в котором есть главный main.go и какие-то ещё директории файлы. Всё хорошо собирается через go build. Теперь я хочу сделать консольную команду в проекте. Создаю в нём отдельную директорию cmd. Внутри делаю команду root.go (в ней же подключаю и инициирую приложение) и ту команду, что мне нужна, допустим resend.go Также создаю там свой main.go (но у него пакет не main, а cmd), в котором команду из root.go выполняю. Соответственно вопрос, как теперь скомпилировать такой бинарник? go build ничего не создаёт. Go run ругается на то, что пакет не main.
источник

AP

Alexey Palazhchenko in Go-go!
go install ./...
источник

DP

Daniel Podolsky in Go-go!
Vasiliy Toporov
Здравствуйте. Есть вопрос по интеграции cobra  в существующий проект. У меня есть сервис, в котором есть главный main.go и какие-то ещё директории файлы. Всё хорошо собирается через go build. Теперь я хочу сделать консольную команду в проекте. Создаю в нём отдельную директорию cmd. Внутри делаю команду root.go (в ней же подключаю и инициирую приложение) и ту команду, что мне нужна, допустим resend.go Также создаю там свой main.go (но у него пакет не main, а cmd), в котором команду из root.go выполняю. Соответственно вопрос, как теперь скомпилировать такой бинарник? go build ничего не создаёт. Go run ругается на то, что пакет не main.
функция main() должна быть в пакете main

но пакетов main может быть в дереве больше одно - раз их импортировать никак

имя же файла - main.go - просто соглашение, на самом деле ни на что не влияет
источник

АП

Александр Попов in Go-go!
любом имя файла в гоу - ни на что не влияет
источник

АП

Александр Попов in Go-go!
потому что они сливаются в имя пакета (кроме спец случаев постфикса для OS)
источник

DP

Daniel Podolsky in Go-go!
и test
источник

DP

Daniel Podolsky in Go-go!
так что - утверждение не верно 🙂
источник

АП

Александр Попов in Go-go!
ну что мы в дыру сейчас полезем? test тоже постфикс
источник

VT

Vasiliy Toporov in Go-go!
Вроде заработало. Но меня смущает вот такая структура:
/cmd
|____resend.go (пакет cmd)
|____main.go (только для команд, пакет main)
|____root.go (пакет cmd)
main.go (основной файл приложения, пакет main)
Как-то можно это более осмысленно структурировать?
источник

АП

Александр Попов in Go-go!
а что за ____?
источник

VT

Vasiliy Toporov in Go-go!
Это вывод tree.
источник

DP

Daniel Podolsky in Go-go!
обычно папка cmd появлякется в одном из двух случаев

1. из нашего модуля собирается несколько бинарников
2. наш модуль - библиотечный, и бинарник в нем играет вспомогательную роль

в любом случае - в папке cmd обычно не содержится файлов, а толькл подпапки, по числу бинарников, каждая называется по имени того бинарника, код которого в ней
источник

АП

Александр Попов in Go-go!
а как же третий путь?
источник

АП

Александр Попов in Go-go!
у нас viper+cobra для субкоманд
источник

АП

Александр Попов in Go-go!
на одном бинарнике
источник

VT

Vasiliy Toporov in Go-go!
Я понял. Т.е. команды сложить в отдульную директорию, и основной main.go положить в другую. Получится, что есть основной бинарник, есть под команды. Все они лежат в cmd, у каждого свой main.go и свой пакет main.
источник