猿问

在另一个文件中声明的“未定义”函数?

我正在尝试编写一个基本的 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!"

}


紫衣仙女
浏览 216回答 3
3回答

慕田峪9158850

我刚刚在 GoLand(这是用于 Go 的 Intellij IDEA)中遇到了同样的问题并找到了解决方案。您需要将Run kindfrom更改File为Package或Directory。如果您进入Run/Edit配置,您可以从下拉列表中选择此项。例如:对于 package ~/go/src/a_package,使用 a Package pathofa_package和 a Directoryof~/go/src/a_package和Run kindof Packageor Directory。

牛魔王的故事

请阅读“如何编写 Go 代码”。在包目录中使用go build或go install,或为包提供导入路径。不要对build或使用文件参数install。虽然您可以使用 的文件参数go run,但您应该构建一个包,通常使用go run .,尽管您几乎应该总是使用go install, 或go build。

料青山看我应如是

如果您正在使用go run,请执行go run *.go。它会自动找到当前工作目录中的所有 go 文件,编译然后运行你的 main 函数。
随时随地看视频慕课网APP

相关分类

Go
我要回答