Jua*_*n M 114 func undefined go
我正在尝试编写一个基本的go程序,它调用不同文件上的函数,但是同一个软件包的一部分.但是,它返回:
undefined: NewEmployee
Run Code Online (Sandbox Code Playgroud)
这是源代码:
main.go:
package main
func main() {
emp := NewEmployee()
}
Run Code Online (Sandbox Code Playgroud)
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!"
}
Run Code Online (Sandbox Code Playgroud)
提前致谢
Jim*_*imB 145
请阅读"如何编写Go代码".
不要/src在你的身上使用GOPATH.套餐位于$GOPATH/src.
对于build或者install您需要将文件放在包目录中.
因为go run,您需要提供所有文件作为参数:
go run main.go employee.go
Run Code Online (Sandbox Code Playgroud)
但是,你应该几乎总是使用go install,或者go build(最好是前者,因为go build在处理非主要包时会引起混淆)
And*_*ips 45
我在GoLand中遇到了同样的问题并找到了解决方案.您需要将Run kindfrom 更改File为Package或Directory.如果进入Run/Edit配置,可以从下拉列表中选择此选项.
对于包装~/go/src/a_package,Package path是a_package和Directory是~/go/src/a_package.你可以选择Run kind你喜欢的.
go run .将运行您的所有文件。入口点是包main()必须唯一的函数main。
另一种选择是构建二进制文件go build并运行它。
小智 5
如果你想从另一个 go 文件调用一个函数并且你正在使用 Goland,那么从“运行”菜单中找到“编辑配置”选项,并将运行类型从文件更改为目录。它清除所有错误并允许您从其他 go 文件调用函数。
您可以尝试以下方法之一。
方法01:假设您的项目名称是MyProject
go build并按Enter。./MyProjectEnter您可以通过键入同时执行两个步骤go build && ./MyProject。它将正确运行所有go文件的项目。
方法02
只需键入go run *.go并按Enter。这将执行所有操作go files。
希望这对某人有帮助。