Go打包多个文件,如何构造

菜鸟,我似乎无法弄清楚如何用包构建我的项目。我想要的是这样的:

  • 我想创建一个包,假设它叫做 Dart。

  • 我的项目目录中有一个名为 dart.go 的文件,其中包含 package main 和 main 函数。

  • 我有另一个文件,让我们在我的项目目录中将其称为 functions.go,第一行是“package dart”。

  • 我只想在 main 中调用 functions.go 中的函数,但不知道如何命名包以构建它。

  • 如果我将 package dart 放在 functions.go 的顶部,它不会构建,因为它会找到 packages main 和 dart。我不希望 functions.go 成为另一个包的一部分,我只想要一个包以及将这个包中的函数拆分为多个文件的能力。

  • 这有可能吗,还是我必须制作多个包裹?

飞镖.go

package main 


import (

  ...

)  


func main () {

  ...

  // call functions declared in functions.go

  ...

}

函数.go


package dart  


import (

  ...

)


func Function1() {

  ... 

}


func Function2() {

  ...

}


弑天下
浏览 129回答 3
3回答

交互式爱情

如果您想做的只是访问不同文件中的函数,请使用 functions.go 开头而package main不是package dart. 这样,您就在一个包中工作,但您的代码分为多个文件。确保它们在同一个目录中,以便它们被视为在同一个包中。

缥缈止盈

假设它们共享相同的定义,您可以毫无问题地在同一个包下拆分不同的文件package。同一目录下不同包定义的唯一例外是测试,其中定义包的推荐方法是在_test其上添加(例如package main_test或package dart_test)。不确定这是你的情况还是你只是在试验这种语言,但我想补充一点,当你将相同的域代码分组在包下并共享它们时,Go 项目更容易维护,从而增加潜在的可重用性。

天涯尽头无女友

如果您只是想创建一个库,那么您将不需要主包。但是,如果您希望创建一个运行来自不同包 ( dartlib) 的函数的独立程序,那么您将需要一个主文件。将您的程序命名为与您正在调用的库(程序 dart调用库 dartlib)不同的名称也是一个好主意图书馆您的库目录结构应如下所示:dartlib| dartlib.godartlib.gopackage dartlibfunction Hello() string { return "hello!" }这可以按以下方式导入: "github.com/your_github_username/dartlib"程序或者,您可以将包存储在您的程序目录中。在这种情况下,目录结构应如下所示:dart (you_program_name)| dart.go dartlib (package) |  dartlib.go在这种情况下,可以按以下方式导入库: "github.com/your_github_username/dart/dartlib"飞镖.gopackage mainimport ( "github.com/your_github_username/dart/dartlib" "fmt")helloString := dartlib.Hello()fmt.Println(helloString)go build .在根目录生成dart可执行文件。$./dart hello!
打开App,查看更多内容
随时随地看视频慕课网APP