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 kind
from 更改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。./MyProject
Enter您可以通过键入同时执行两个步骤go build && ./MyProject
。它将正确运行所有go
文件的项目。
方法02
只需键入go run *.go
并按Enter。这将执行所有操作go files
。
希望这对某人有帮助。