Макет каталога:
~ cd $GOPATH
~ tree src/simple
src/simple
└── main
├── main.go
└── other.go
main.go:
package main
import "fmt"
func main() {
fmt.Println("This is in main. calling somefunc...")
somefunc()
fmt.Println("done. bye :)")
}
other.go:
package main
import "fmt"
func somefunc() {
fmt.Println("This is in somefunc in other.go")
}
Это прекрасно работает с go build
:
~ cd $GOPATH/src/simple/main/
~ go build
~ ./main
This is in main. calling somefunc...
This is in somefunc in other.go
done. bye :)
Из среды IDE GoLand, если я запускаю, я получаю:
main/main.go:7:2: undefined: somefunc
Как правило, в редакторе подсвечиваются все синтаксические ошибки.Вызов somefunc
в редакторе считается допустимым синтаксисом, но при запуске он не работает.Я могу даже cmd-щелкнуть в функцию, чтобы перейти к определению.
Это с GoLand 2018.2.3 и go version go1.11