【问题标题】:How do files in `go run *.go` gain access to functions without an import?`go run *.go` 中的文件如何在没有导入的情况下访问函数?
【发布时间】:2018-08-15 17:30:01
【问题描述】:

我正在关注Bookshelf tutorial 在 Google App Engine 上构建网络服务。

要启动应用程序,教程运行go run app.go auth.go template.go。我不明白这是如何工作的。例如,template.go 中的parseTemplate method 如何在没有template.go 的导入语句的情况下在app.go 中使用?

我的理解是,在 Go 项目中,我们有一个入口点文件,其中包含一个 main 方法。然后该文件导入包以在内部使用它们。同时运行这三个文件有什么好处?

【问题讨论】:

    标签: google-app-engine go


    【解决方案1】:

    该示例使用单个包,特别是 main 包来实现所有内容。

    每个包都可能包含多个文件,即使是main 包。在包中您不导入任何内容,您可以从包中访问所有内容。 Spec: Packages:

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

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

    go run app.go auth.go template.go
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-21
      • 2021-11-27
      • 1970-01-01
      • 1970-01-01
      • 2020-05-10
      • 1970-01-01
      相关资源
      最近更新 更多