Использовать пакет правильно, как расположить каталог, имя файла, файл модульного теста?

Мое дерево исходных файлов похоже на это:

/src
  /pkg
    /foo
      foo.go
      foo_test.go

Внутри foo.go:

package foo

func bar(n int) {
    ...
}

внутри foo_test.go:

package foo

func testBar(t *testing.T) {
    bar(10)
    ...
}

Мои вопросы:

  1. Действительно упаковывает имя, касается имени каталога, имени исходного файла?
  2. Если существует только один исходный файл для пакета, нуждаются, я поместил его в каталог?
  3. Если я поместил foo.go и foo_test.go в том же пакете?
  4. В foo_test.go, поскольку это находится в том же пакете как foo.go, Я не импортировал foo. Но когда я компилирую foo_test.go с 6 г говорит это bar() is undefined.Что мне делать?
13
задан Nik 12 November 2019 в 16:24
поделиться

1 ответ

1 - Язык SPEC говорит:

Набор файлов, совместно использующих одно и то же packageName, формирующую реализацию пакета. Реализация может потребовать, чтобы все исходные файлы для пакета размешают тот же каталог.

Так кажется, что нет никаких требований к именам файлов / каталогах, но было бы безопаснее поставить весь файл, который образует пакет в одном каталоге.

2 - Очевидно, файл должен быть в некоторых каталогах. Я предполагаю, что вы имеете в виду » Должен ли я положить его в подкаталог SRC ?» Мне кажется, основываясь на приведенной выше цитате, что у вас могут быть все ваши файлы в SRC , если вы действительно хотели.

3 - Да.

4 - ИСПОЛЬЗОВАНИЕ GO TEST

8
ответ дан 2 December 2019 в 01:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: