Существует много вопросов по этому вопросу, в том числе почему вы не должны использовать import "./my/path"
и почему это работает только потому, что это требует код устаревшего кода.как обращаться с импортом абсолютных путей и вилок github?
Если это так, как вы обрабатываете инкапсуляцию проекта и расширения виджетами github? В каждом другом языке я могу сделать виртуализацию проекта, или git clone, и там все инкапсулировано. Как мне получить такое же поведение из проекта go?
Простой пример с использованием примера «привет мир».
hello.go
package main
import ("fmt"
"github.com/golang/examples/stringutil")
func main() {
fmt.Printf(stringutil.Reverse("hello, world")+"\n")
}
выше работает отлично. Но если я хочу использовать свой собственный StringUtil, который находится в каталоге и будет собирать в один двоичный файл, я еще нужен полный путь:
package main
import ("fmt"
"github.com/myrepo/examples/util/stringutil")
func main() {
fmt.Printf(stringutil.Reverse("hello, world")+"\n")
}
Теперь, если кто-то копирует или вилы мой Репо, он имеет прямая зависимость от «github.com/myrepo/», , хотя это используется полностью внутри!
Что делать, если есть 20 разных файлов, которые импортируют utils/
? Мне нужно менять каждый каждый раз, когда кто-то вилки? Это много посторонних изменений и бессмысленный git commit.
Что мне здесь не хватает? Почему относительные пути такие плохие? Как переделать проект, который ссылается на его собственные вспомогательные каталоги (и их пакеты), не меняя десятки файлов?
Таким образом, идея о пакете абсолютно. Период. Вы можете размещать каталоги выше/ниже друг друга, но если одно требует другого, и не находится в одном пакете, это абсолютный импорт. Это означает, что вы не создаете программное обеспечение, состоящее из пакетов, которые собираются вместе и не являются абсолютными, или принимают много расточительных перезаписей. Я не понимаю. Разве они не думали об этом, когда они проектировали пространство имен пакетов? – deitch
Философия Google в этом заключается в том, что они продают все в одно дерево источников и все. Таким образом, это делает эту идею взаимозависимостей forking зависимыми, так как каждая зависимость уже разветвлена в некотором смысле. –
Это смешно, потому что я вот-вот раскошу библиотеку, и я не уверен, куда идти :) –