Вопросы

Должно ли имя пакета в Go совпадать с именем самого внутреннего каталога?

ВНИМАНИЕ, этот вопрос касается спецификаций языка Go, а не рекомендаций или рекомендаций.

Я прочитал много статей о пакетах, но до сих пор не совсем понимаю взаимосвязь между каталогом и именем пакета. Вот мой пример.

Моя структура проекта похожа на следующие снимки экрана. Когда я делаю go run ~/go/src/myproj/main.go, ошибка говорит:

src \ myproj \ main.go: 5: 2: не удается найти пакет myproj / pa / pb ни в одном из: c: \ go \ src \ myproj \ pa \ pb (из $ GOROOT) C: \ Users \ terry \ go \ src \ myproj \ pa \ pb (из $ GOPATH)

введите описание изображения здесь

Однако, если я изменю package pb на package pa в p.go, и изменю импорт с "myproj/pa/pb" на "myproj/pa", и изменю fmt.Print(pb.Greet) на fmt.Print(pa.Greet) в main.go, это сработает. Должен ли самый внутренний каталог соответствовать имени объявления пакета? Моя версия для игры — 1.14.4

Читать:
кеширование модулей go в сборке кода без пользовательского образа докера

Должен ли самый внутренний каталог соответствовать имени объявления пакета? Нет, конечно нет. Но это очень разумное соглашение, и вы никогда не должны его нарушать, потому что люди будут ненавидеть вас (справедливо), если вы это сделаете.   —  person Peiti Li    schedule 30.06.2020

Похожие записи

VSCode + Pytest: ошибка: TypeError: невозможно прочитать свойство $ неопределенного значения

admin

Как извлечь индексы ввода-вывода позиции из текстового токенизатора huggingface transformer?

admin

RuntimeError: исключение игнорируется в: ‹function _ProactorBasePipeTransport

admin

Клонирование GitLab не выполнено

admin

Настройка конечного автомата (таймеров) spring (uml) для модульных тестов

admin

flutter: как получить полезную нагрузку push-уведомления из источника, отличного от firebase

admin