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

新手上路,请多包涵

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

原文由 Juan M 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 863
2 个回答

请阅读 “如何编写 Go 代码”

在包目录中使用 go buildgo install ,或提供包的导入路径。不要为 buildinstall 使用文件参数。

虽然你可以为 go run 使用文件参数,但你应该构建一个包,通常使用 go run . ,尽管你应该几乎总是使用 go install go build

原文由 JimB 发布,翻译遵循 CC BY-SA 4.0 许可协议

我刚刚在 GoLand(这是用于 Go 的 Intellij IDEA)中遇到了同样的问题并制定了解决方案。 You need to change the Run kind from File to Package or Directory .如果您进入 Run/Edit 配置,您可以从下拉列表中选择它。

Eg: for package ~/go/src/a_package , use a Package path of a_package and a Directory of ~/go/src/a_package and Run kind PackageDirectory

原文由 Andrew W. Phillips 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏