在另一个文件中声明的golang“undefined”函数?

我正在尝试编写一个基本的go程序来调用另一个文件上的函数,但是是同一个包的一部分。 但是,它返回:

undefined: NewEmployee 

这里是源代码:

main.go

 package main func main() { emp := NewEmployee() } 

employee.go

 package main type Employee struct { name string age int } func NewEmployee() *Employee { p := &Employee{} return p } func PrintEmployee (p *Employee) { return "Hello world!" } 

提前致谢

请阅读“如何编写前往代码” 。

不要在你的GOPATH使用/src 。 包位于$GOPATH/src

为了buildinstall您需要将文件放在软件包目录中。

为了go run ,您需要提供所有文件作为参数:

 go run main.go employee.go 

但是,你应该几乎总是使用go install ,或go build (最好是前者,因为go build造成混乱,当使用非主包)

我刚刚在Gogland遇到了同样的问题,并且发现你需要将文件中的“Run Kind:”更改为Package。 如果进入运行/编辑configuration,您可以从下拉列表中select此选项…