Daniel
Go mod init api сделай да хелло ворлд запусти
пока воздержусь. но, блин, я чувствовал, что с этими модулями какая-т о жопа. не знаете, в какое спортлото написать, чтобы их не вводили?
Kirill
¯\_(ツ)_/¯
Artem
go killsyou
Aleksandr
Vladislav
Вы о replace что-ли?
Aleksandr
Об именования пакетов и модулей
Artem
Слушай, так и раньше можно было, если пакет в gopath/api/def. Ничего не поменялось в этом плане
так а оно норм разруливается, когда в сорсе другой либы прописаны относительные пути?
Daniel
разве? теперь я могу скачать модуль. и в нем будут вот такие импорты. и я буду читать код, и, каждый раз, видя что-то вроде import "net/http" я должен буду пойти проверить go.mod по-моему, кое-что изменилось
Kirill
LOL https://github.com/golang/go/commit/9850ad045fced1346a049df4baec7d4b7ab0db8c#diff-b2d90156dd033e6f5810ff415a54dbf6R487
Aleksandr
так а оно норм разруливается, когда в сорсе другой либы прописаны относительные пути?
Относительные пути не надо использовать. В смысл вопроса вникать не буду
Daniel
кстати, да
Artem
Относительные пути не надо использовать. В смысл вопроса вникать не буду
ну я у себя пишу import "api", пушу в гит, там другой стягивает в свой проект и у него там тоже есть api и как это разруливается?
Daniel
вот это как раз через модули разруливается
Aleksandr
как я мог его скачать?!
Ну да, через go get ошибку выдаст, т.к. Не найдет пакета api
Daniel
вооот
Artem
go get же с модулями неробит, или вы про абстрактный?
Daniel
раньше я мог любую либу на гитхабе взять и начать читать успешно а теперь (я все еще не верю!) я должен ее сначала полюбить и изучить
Aleksandr
Go mod тоже ошибку выдаст, ведь не может скачать api/def из go.mod
Aleksandr
А в го.мод он обязательно попадет если это другой модуль. Или не попадает если это подмодуль. И проблемы нет
Aleksandr
То есть в модуле pack1 мы можем импортировать модуль pack2, только если он установлен через go get
Daniel
слушай, я про чтение кода, а не про компилятор. компилятор разберется, я верю. а вот для человека однозначность исчезла, если это все правда
Aleksandr
Go get вносит пакет в go.mod
Aleksandr
слушай, я про чтение кода, а не про компилятор. компилятор разберется, я верю. а вот для человека однозначность исчезла, если это все правда
Да, возможно. Но это редкий кейс, который ты вряд ли встретишь на практике, ведь пакеты ты будешь ставить с гитхаба либо писать вручную
Daniel
редкий кейс - чтение чужого кода?!
Kirill
тогда понятно, почему разговор зашел в таком ракурсе
Aleksandr
Редкий кейс, когда в библиотеке импортирован локальный пакет, не устанавливающийся с гитхаба
Kirill
ждем пакеты вида "google/uuid"
Kirill
напомню, TLD у них такой есть
Daniel
Редкий кейс, когда в библиотеке импортирован локальный пакет, не устанавливающийся с гитхаба
но проверять, не редкий ли мой кейс, я теперь буду должен всегда, правда?
Aleksandr
Ведь и раньше были возможны такие импорты
Aleksandr
И го нет так же тебе выдаст ошибку
Daniel
разве? раньше я на взгляд мог импорт стандартной либы отличить он самопала
Kirill
разве? раньше я на взгляд мог импорт стандартной либы отличить он самопала
nеt/http от net/http и net/httр ты тоже на взгляд мог отличить?
Aleksandr
Ничего не изменилось. Ты просто впервые задумался об этой проблеме
Daniel
Aleksandr
$GOPATH/nеt/http я мог только сам создать
И сейчас тоже только сам
Daniel
погоди
Kirill
$GOPATH/nеt/http я мог только сам создать
технически — нет, и это похоже на метод аттаки
Daniel
вот человек пишет у себя import "api/def" вот он выкатывает это на гитхаб вот я его качаю и собираю оно собирается?
Kirill
технически — нет, и это похоже на метод аттаки
вот смотри. я же могу вполне себе настроить резолв nеt на свой хост и отдать тебе по урлу /http?goget=1 валидную метаинформацию
Kirill
ты в итоге скачаешь подставной пакет
Daniel
там еще https есть
Kirill
там еще https есть
это наименьшая из проблем
Aleksandr
это ты тоже попался на уловку
да не суть. мы о другом
Daniel
так собирается?
Aleksandr
до 1.11 мы могли создать в $GOPATH пакет api/def. Включить его в пакет github.com/user/mypack. go get в этом случае бы не отработал. Теперь мы можем подобное провернуть с go mod, но go get опять же не отработает
Aleksandr
то есть ничего не изменилось. но в локальной разработке, не рассчитаной на паблик или установку с хостинга, мы можем импользовать подобные именования (как и раньше)
Daniel
а!
Daniel
полегчало, спасибо
Kirill
да не суть. мы о другом
https://play.golang.org/p/jB5s7RKVF02
Kirill
да не суть. мы о другом
это просто мысль у меня появилась по ходу
Eugene
Здравствуйте, подскажите, я правильно понимаю, что у go build нет режимов оптимизации?
Aleksandr
https://play.golang.org/p/jB5s7RKVF02
я понял. но это и до 1.11 было возможно
Daniel
правильно
Aleksandr
погоди опять а разве я модуль не целиком на гитхаб выкатываю, со всеми его def/api?
ну так а пакет до 1.11 ты не целиком выкатываешь? ответ такой же
Aleksandr
или поясни вопрос
Daniel
ну так а пакет до 1.11 ты не целиком выкатываешь? ответ такой же
до 1.11 я мог в своем коде сослаться на свой api/def, но не было никаких шансов, что эта ссылка останется валидной у другого юзера
Daniel
а сейчас?
Aleksandr
так же
Aleksandr
добавить api/def в текущий модуль можно только через go get
Aleksandr
то есть api/def должен быть go gettable
Aleksandr
что кстати безопаснее чем раньше
Aleksandr
ведь раньше ты мог любой пакет ручками добавить из gopath
Aleksandr
а теперь только через go get