Комментарии 40
В vgo наоборот добавили поддержку vendor не смотря на то, что изначально была идея использовать кэш/прокси. По настоятельным и вполне резонным замечаниям общества эту поддержку ввели. Я не видел намеков на то, что это временно и «в будущем разработчики Go хотят уйти от этого».
Сломать не сломали, зато удалили кучу «старых» ОС в числе которых Windows XP.
Расширенная поддержка этой старой (без кавычек) ОС производителем завершена в 2014 году
работающие под Windows XP
Не уловил, чем модули отличаются от крейтов Cargo. Объясните, если не трудно?
Эм… что-то очень странные претензии ...
- Почему lock файлы игнорируются? Программистами? Это не вина инструмента.
- Вместо указания четкой версии в том же cargo, вполне можно указать промежуток, или даже "эта или любая минорная выше" версия, например.
- В статье написано, что вместо этого есть команда
go mod
, которая делает тоже самое, что иCargo
пытаясь найти самую новую версию, которая подходит по требования. Чем это отличается от того, что бы просто по умолчанию выполнять установку зависимостей сразу из lock файла и только в каких-то случаях обновлять их? Ну, кроме того, что оно каждый раз запускается и не кеширует результаты, которые не меняются?
струдом придумывается сфера применения… клиенты игр?
В GoLand новые модули уже существуют, как абстракция. Однако работает всё относительно сыро (например, если вы скачаете модуль, используя Vgo, но не делая go get, то код у вас не начнёт анализироваться)
что это вообще значит? Как скачать модуль vgo, не делая go get?
Вы зря вообще в статье используете термин vgo, т.к. это не vgo, а go modules (go mod). Vgo — это отдельно стоящий эксперимент по написанию системы модулей, который после слияния с go стал go modules. Это введет в заблуждение большинство читателей.
Следует везде исправить на go modules/go mod, но написать пометку, что раньше это развивалось в проекте vgo.
Как скачать модуль vgo, не делая go get?
Если вы cоздадите файл, в котором будет описана зависимость, например, так:
module mod
require github.com/Hixon10/testmod v1.0.1
А потом сделаете go build, то нужный модуль автоматически скачается:
go: finding github.com/Hixon10/testmod v1.0.0
go: downloading github.com/Hixon10/testmod v1.0.0
и на каком этапе у меня в goland не будут ресолвиться импорты?
C:\Go\bin\src\github.com\hixon10\testmod
А теперь такой:
C:\Go\bin\pkg\mod\github.com\!hixon10\testmod@v1.0.0
Поэтому GoLand не может найти модуль, и соответсвенно показать его.
У вас модуль будет скачен по другому пути, в отличие от go get.
дело в том, что теперь go get также используется и для скачивания модулей, если он запускается из контекста gomod (т.е. если у вас включена переменная окружения, либо вы находитесь вне gopath). Поэтому go get github.com/Hixon10/testmod@v1.0.1 в директории модуля скачает пакет в pkg\mod
Поэтому GoLand не может найти модуль, и соответсвенно показать его.
для этого в настройках goland нужно включить поддержку vgo для проекта.
GoLand 2018.2.2
Build #GO-182.4129.57, built on August 23, 2018
смотрите: имеем пустой pkg. Открываем проект в goland. Включаем vgo для проекта (или он уже включен) — в фоне запускается go list, что скачивает в pkg репозитории зависимостей. В дереве файлов появляется пункт Go modules — пока пустой. Делаем go mod download — из скачаных ранее реп в pkg разворачиваются конкретные версии.
И вот тут у меня баг — Go modules все еще пустой (пока не передернешь галочку vgo в настройках или не перезагрузишь всю ide). После этого в Go modules появляются модули и они правильно ресолвятся в коде.
Go 1.11 зарелизился — WebAssembly и Нативные модули