今天遇到个奇葩的bug。

我的工程项目是demo1,里面有3个文件,分别是main.go、Block.go、BlockChain.go,这哥仨同属main包。

其中,BlockChain.go 中,定义了一个函数 NewBlockChain(),然后我在 main.go 文件的 main 函数中,调用这个NewBlockChain() 函数。那么,问题来了。当我在 Goland 中运行 main.go 文件的时候,报错: undefined: NewBlockChain,what?黑人问号脸。

同个package中,不同的 .go 文件,它们之间函数应该是可以相互调用的才对,(main函数除外),那为什么会报错?
查了查资料,这是由于BlockChain.go 文件未被编译导致的。这就怪了,运行 main.go 文件的时候,Goland 不应该自动把 main.go 文件中,所使用到的BlockChain.go ,也给编译了么?

百思不得其解,暂且归根于Goland 出bug了。

下面讲讲遇到这种情况怎么破?使用命令行。

1、打开命令行工具:

1.png

2、先使用 pwd 命令,查看当前工作路径;
3、再使用 ls 命令,查看当前工作路径下的文件;
4、最后用 go run *.go 命令,编译当前路径下所有的 .go 文件,至此,顺利运行。

2.png

文章来源于互联网,如有雷同请联系站长删除:同个package包,文件间调用,报错undefined:

发表评论