Почему команде "go run" не удается найти второй файл в основном пакете?
я испытываю проблему, когда go run main.go
выдает ошибку:
# command-line-arguments
./main.go:9: undefined: test
команды go build && ./goruntest
компиляция и запуск программы просто отлично.
выход:
привет из test ()
привет от sameFileTest ()
привет от pkgtest.Test ()
привет от pkgtest.Тест1()
у меня есть настройка каталога так:
go/src/github.com/username/goruntest/
pkgtest/
pkgtest.go
pkgtest1.go
main.go
test2.go
здесь код.
main.go
package main
import (
"fmt"
"github.com/username/goruntest/pkgtest"
)
func main() {
fmt.Println(test()) // main.go:9
fmt.Println(sameFileTest())
fmt.Println(pkgtest.Test())
fmt.Println(pkgtest.Test1())
}
func sameFileTest() string {
return "Hi from sameFileTest()"
}
gotest1.go
package main
func test() string {
return "Hi from test()"
}
pkgtest / pkgtest.go
package pkgtest
func Test() string {
return "Hi from pkgtest.Test()"
}
pkgtest / pkgtest1.go
package pkgtest
func Test1() string {
return "Hi from pkgtest.Test1()"
}
я понимаю, что проблема заключается во втором файле в составе package main
и я также понимаю, что нет никакой реальной причины иметь второй файл в main
.
мой вопрос: почему go run
не удалось обработать эту настройку, но создание и запуск исполняемого файла работает нормально?
редактировать
включен второй файл в pkgtest
я также понимаю, что команда go run main.go gotest1.go
работает, но почему мне нужно указать gotest1.go
?
я первоначально опустил эти детали для краткости. Но теперь я вижу, что они важны для вопрос.
1 ответов
попробуйте предоставить все соответствующие файлы go run
$ go help run
usage: go run [build flags] [-exec xprog] gofiles... [arguments...]
Run compiles and runs the main package comprising the named Go source files.
A Go source file is defined to be a file ending in a literal ".go" suffix.