不带导入功能的`go run * .go`文件如何访问功能?

时间:2018-08-15 07:48:03

标签: google-app-engine go

我正在遵循Bookshelf tutorial在Google App Engine上构建Web服务。

要启动该应用程序,本教程将运行go run app.go auth.go template.go。我不明白这是怎么回事。例如,如何在parseTemplate method中使用template.go中的app.go而没有template.go的导入语句?

我的理解是,在Go项目中,我们有一个具有主要方法的入口文件。然后,该文件导入软件包以供内部使用。一次运行这三个文件有什么好处?

1 个答案:

答案 0 :(得分:5)

该示例使用单个程序包,特别是main程序包来实现所有功能。

每个软件包都可能包含多个文件,甚至main软件包也是如此。在包内,您无需导入任何内容,就可以访问包中的所有内容。 Spec: Packages:

  

Go程序是通过将程序包链接在一起来构造的。程序包由一个或多个源文件构成,这些文件一起声明了属于该程序包的常量,类型,变量和函数,并且可在同一程序包的所有文件中访问。这些元素可能是exported,并在另一个包中使用。

特殊的main包分成多个文件时,即在启动应用程序时必须列出所有文件:

go run app.go auth.go template.go

如果将示例分成多个包,则只有从main导入其他包才能访问它们。