为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
弑天下 2023-06-19 15:46:51
菜鸟,我似乎无法弄清楚如何用包构建我的项目。我想要的是这样的:我想创建一个包,假设它叫做 Dart。我的项目目录中有一个名为 dart.go 的文件,其中包含 package main 和 main 函数。我有另一个文件,让我们在我的项目目录中将其称为 functions.go,第一行是“package dart”。我只想在 main 中调用 functions.go 中的函数,但不知道如何命名包以构建它。如果我将 package dart 放在 functions.go 的顶部,它不会构建,因为它会找到 packages main 和 dart。我不希望 functions.go 成为另一个包的一部分,我只想要一个包以及将这个包中的函数拆分为多个文件的能力。这有可能吗,还是我必须制作多个包裹?飞镖.gopackage main import (  ...)  func main () {  ...  // call functions declared in functions.go  ...}函数.gopackage dart  import (  ...)func Function1() {  ... }func Function2() {  ...}
查看完整描述

3 回答

?
交互式爱情

TA贡献1712条经验 获得超3个赞

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



查看完整回答
反对 回复 2023-06-19
?
缥缈止盈

TA贡献2041条经验 获得超4个赞

假设它们共享相同的定义,您可以毫无问题地在同一个包下拆分不同的文件package。同一目录下不同包定义的唯一例外是测试,其中定义包的推荐方法是在_test其上添加(例如package main_testpackage dart_test)。

不确定这是你的情况还是你只是在试验这种语言,但我想补充一点,当你将相同的域代码分组在包下并共享它们时,Go 项目更容易维护,从而增加潜在的可重用性。


查看完整回答
反对 回复 2023-06-19
?
天涯尽头无女友

TA贡献1831条经验 获得超9个赞

如果您只是想创建一个库,那么您将不需要主包。但是,如果您希望创建一个运行来自不同包 ( dartlib) 的函数的独立程序,那么您将需要一个主文件。


将您的程序命名为与您正在调用的库(程序 dart调用库 dartlib)不同的名称也是一个好主意


图书馆


您的库目录结构应如下所示:


dartlib

|

 dartlib.go

dartlib.go


package dartlib


function 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"


飞镖.go


package main


import (

 "github.com/your_github_username/dart/dartlib"

 "fmt"

)


helloString := dartlib.Hello()

fmt.Println(helloString)

go build .在根目录生成dart可执行文件。


$./dart

 hello!

查看完整回答
反对 回复 2023-06-19
  • 3 回答
  • 0 关注
  • 153 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信