Перейти локальные пакеты и модули - PullRequest
0 голосов
/ 25 июня 2018

Я только начал изучать GO-разработку, прочитал много статей и документации, но не нашел конкретного ответа.

Есть несколько вопросов

  1. Как использовать локальные пакеты?Использование ./../ не работает, я могу поместить весь свой исходный код в каталог vendror/src, но это заставляет структуру моего проекта выглядеть не так, как я хочу
  2. Должен ли я всегда загружать где-нибудь в удаленном репозитории свои пакеты?Можно ли держать их локально?Если я разрабатываю микросервис, сам микросервис является монолитным приложением.И я не хочу, чтобы у моего микросервиса был один файл.Я хочу разделить логику между несколькими файлами.
  3. Можно ли хранить все файлы в одном файле?

Я знаю, что этот вопрос уже задавался несколько раз, однако я не нашел полного ответа.

Буду признателен за любую помощь.Спасибо

Ответы [ 2 ]

0 голосов
/ 25 июня 2018

Сначала: прочитайте «Как написать код Go» и придерживайтесь его и только его.

  1. Для инструмента go нет "локальных пакетов". Забудьте это различие локального, нелокального, удаленного, что угодно. Для инструмента go есть только пакеты, и эти пакеты имеют путь импорта. Этот путь импорта определяет, где инструмент go будет искать код в файловой системе. Если ваш путь импорта import "int.microsoft/secret/new/foo", тогда ваш код для пакета foo должен находиться на вашем компьютере в каталоге `$ GOPATH / src / int.microsoft / secret / new / foo".

    Для go build и (go install, go test, ...) в пути импорта вообще есть no , означающее: "int.microsoft/secret/new/foo" больше нет строка, отличная от «example1 / foo» или «github.com/someone/tool7/bar». Это просто строки и пакеты ищутся по этим путям. Ни один из этих пакетов не является "локальным" пакетом, все они являются просто пакетами.

    Так что, если вы поместите свой код для пакета «что угодно» в $ GOPATH / src / some / странный / путь / что угодно, вы должны импортировать его как import "some/strange/path/whatever".

  2. Если вы хотите поделиться своим кодом с кем-то другим, сохранить удаленную резервную копию или использовать сайт с кодовым хостингом, например, github, чтобы упростить синхронизацию трех рабочих станций, вы можете загрузить свой код, например, на. GitHub. Это не связано с тем, как вы импортируете свои пакеты.

    Субкоманда only в инструменте go, где путь импорта имеет дополнительное значение, отличное от того, что это путь, предназначен для go get, который знает о нескольких сайтах размещения кода, таких как github, и интерпретирует путь импорта "github.com/someone/prjct" и можете клонировать это git-репо для вас, удобно разместив его в нужной папке под вашей $ GOPATH.

    Итак: Нет. Нет абсолютно никакой необходимости загружать каждый бит кода. (Например, у меня много вещей только на моей машине в $ GOPATH / src / tmp).

    Разделение кода на а) разные пакеты и б разные файлы никак не связано со всем этим. Просто делайте так, как вам удобно и логично.

  3. Ну нет; просто потому что вы не можете хранить несколько файлов в одном файле. Вы имели в виду «несколько файлов в одной папке»? Да это нормально. Разделить на файлы и пакеты, если разделение имеет смысл. Взгляните на стандартную библиотеку или любой другой проект с открытым исходным кодом.

0 голосов
/ 25 июня 2018
  1. Ваш путь импорта должен быть действительным в $GOPATH/libPath синтаксисе

  2. для этого вы можете обмениваться исходным кодом своих служб столько раз, сколько хотите, и просто разделять корзину, используя несколько основных пакетов

  3. если вы имеете в виду каталог по вторым файлам, для этого не существует наилучшей практики, если это не касается сложности вашего кода, вы можете сделать это тоже

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...