Мое дерево исходных файлов похоже на это:
/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)
...
}
Мои вопросы:
foo.go
и foo_test.go
в том же пакете?foo_test.go
, поскольку это находится в том же пакете как foo.go
, Я не импортировал foo
. Но когда я компилирую foo_test.go
с 6 г говорит это bar() is undefined
.Что мне делать?1 - Язык SPEC говорит:
Набор файлов, совместно использующих одно и то же packageName, формирующую реализацию пакета. Реализация может потребовать, чтобы все исходные файлы для пакета размешают тот же каталог.
Так кажется, что нет никаких требований к именам файлов / каталогах, но было бы безопаснее поставить весь файл, который образует пакет в одном каталоге.
2 - Очевидно, файл должен быть в некоторых каталогах. Я предполагаю, что вы имеете в виду » Должен ли я положить его в подкаталог SRC
?» Мне кажется, основываясь на приведенной выше цитате, что у вас могут быть все ваши файлы в SRC
, если вы действительно хотели.
3 - Да.
4 - ИСПОЛЬЗОВАНИЕ GO TEST