Где я могу разместить код для моих собственных пакетов в Golang - PullRequest
0 голосов
/ 03 февраля 2020

Предположим GOPATH=c:\DATA\go, а затем предположим, что:

C:\
  DATA\
    go\
      bin\
      pkg\
      src\   

Насколько я понимаю, bin для скомпилированных "команд", как это сказано в документации, я предполагаю, что они означают скомпилированные приложения командной строки.

И pkg для установленных пакетов, каждый из которых находится в своей родительской папке с архитектурой ОС +.

И src для моего кода, каждый «проект» находится в подпапке. Я не уверен, что мои папки «project» технически называются «репозитории», «модули» или «пакеты»? Или любой из них, в зависимости от того, что это такое?

Мой вопрос: если я создаю свой собственный модуль или пакет, то есть многоразовый пакет, то я должен оставить его под src или pkg?

Язык базового c Go читается менее чем за несколько часов, увы, соглашения с папками вызывали у меня дни головокружительных и инструментальных ошибок.

1 Ответ

0 голосов
/ 03 февраля 2020

Вот как мы делали это в течение нескольких лет (что, кажется, работает отлично):

Существует родительский каталог (назовите его src или что-то еще). Этот каталог содержит список проектов. Каждый проект - это свой собственный модуль (т. Е. Имеет свой собственный файл go.mod).

Поскольку иногда вам нужно было обмениваться кодом между проектами, в итоге мы получили проект под названием shared, который имеет свои собственные модули, которые используются различными другими проектами. Хотя, честно говоря, несколько раз было трудно определить, принадлежит ли модуль к project_X или shared. Так что вы можете быть осторожны с этим.

EDIT : забыл упомянуть, что cmd предназначен для основных приложений внутри проекта, а pkg предназначен для библиотечного кода, который будет использоваться внешними приложениями.

Пример дерева такой структуры выглядит следующим образом:

src
├── project_1
│   ├── cmd
│   ├── go.mod
│   ├── go.sum
│   └── pkg
├── project_2
│   ├── cmd
│   ├── go.mod
│   ├── go.sum
│   └── pkg
├── shared
│   ├── README.md
│   ├── cmd
│   ├── go.mod
│   ├── go.sum
│   └── pkg
|       ├── pkg_1
|       │   ├── README.md
|       │   ├── fi1e_1.go
|       │   └── fi1e_2.go
|       ├── pkg_2
|       │   ├── README.md
|       │   └── fi1e_1.go
|       ├── pkg_3
|       │   ├── pkg_3_1
|       |   |   ├── file_1.go
|       |   |   └── file_2.go
|       │   ├── pkg_3_2
|       │   └── pkg_3_3
|       └── util
|           ├── README.md
|           ├── common.go
|           └── logger.go
└── tools
    ├── README.md
    ├── go.mod
    ├── go.sum
    ├── tool_1
    ├── tool_2
    └── tool_3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...