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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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!"
}
答案

请阅读"How to Write Go Code"

不要在你的/src中使用GOPATH。套餐位于$GOPATH/src

对于buildinstall,您需要将文件放在包目录中。

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

go run main.go employee.go

但是,你应该几乎总是使用go installgo build(最好是前者,因为go build在使用非主要包时会引起混淆)

另一答案

我在GoLand中遇到了同样的问题并找到了解决方案。你需要将Run kindFile改为PackageDirectory。如果您进入Run/Edit配置,您可以从下拉列表中选择此选项。

对于包~/go/src/a_packagePackage patha_packageDirectory~/go/src/a_package。你可以选择你喜欢的Run kind

另一答案

如果你正在使用go run,请做go run *.go。它将自动查找当前工作目录中的所有go文件,编译然后运行main函数。

另一答案

您可以尝试以下之一。

方法01:假设您的项目名称是MyProject

  • 转到你的路径,键入go build并按Enter键。
  • 它将创建一个可执行文件作为您的项目名称(“MyProject”)
  • 然后在你的终端类型./MyProject并点击回车

您可以通过键入go build && ./MyProject立即执行这两个步骤。它将使用所有go文件正确运行您的项目。

方法02

只需键入go run *.go并按Enter键。这将执行你所有的go files

希望这会对某人有所帮助。

另一答案

如果要从另一个go文件调用函数并使用Goland,则从“运行”菜单中找到“编辑配置”选项,并将运行类型从“文件”更改为“目录”。它清除所有错误,并允许您从其他go文件调用函数。

另一答案

如果你的源文件夹是结构化的/ go / src / blog(假设源文件夹的名称是博客)。

  1. cd / go / src / blog ...(包含你的包的文件夹里面的cd)
  2. 去安装
  3. 博客

这应该同时运行所有文件,而不是必须手动列出文件或在命令行上“抨击”方法。

另一答案

我遇到了与Go11相同的问题,只是想分享我是如何解决它以帮助其他人以防他们遇到同样的问题。

我在Qazxswpoi之外有我的Go项目,因此我必须在没有打开此选项的情况下打开$GOPATH,它会给你这个问题;即使你试图建立或测试整个GO111MODULE=onpackage它将无法解决没有directory

以上是关于golang“undefined”函数在另一个文件中声明?的主要内容,如果未能解决你的问题,请参考以下文章

webconsole提示undefined: ssh.InsecureIgnoreHostkey错误解决方案

golang 定义结构一次,在另一个结构定义中使用

Golang 在另一个结构的方法中更改结构的值

Golang编程问题报错解决记录

关于webconsole报../website/console.go:35: undefined: ssh.InsecureIgnoreHostkey 错误解决方案

关于webconsole报../website/console.go:35: undefined: ssh.InsecureIgnoreHostkey 错误解决方案