如果你只运行go run test1.go,而这个文件引用了同一个包中另一个文件的函数,它就会出错,因为你没有告诉Go语言运行整个包,而是告诉它只运行那个文件。 你可以通过几种方式将文件分组为run命令中的一个包来告诉go作为一个完整的包运行。下面是一些例子(如果你的终端在你的包的目录中): go run ./ 或 go run test1.go test2.go 或 go run *.go 使用build命令也会有相同的行为,运行后创建的可执行文件将作为分组包运行,其中的文件知道每个函数等。示例: go build ./ 或 go build test1.go test2.go 或 go build *.go 然后,简单地从命令行调用可执行文件,将给予类似于当您将所有文件作为一个完整的包一起运行时使用run命令的输出。 ./test1 或者在创建可执行文件时碰巧调用的任何文件名。
9条答案
按热度按时间cs7cruho1#
包中不能有多个
main
。更一般地说,一个包中不能有多个函数具有给定的名称。
删除
test2.go
中的main
并编译应用程序。demo
函数将在test1.go
中可见。drkbr07n2#
Go Lang默认只编译/运行上面提到的文件。要链接所有文件,你需要在运行时指定所有文件的名称。
运行以下两个命令之一:
如果您想构建它们,您应该做类似的事情。
ffscu2ro3#
我也在寻找同样的东西。为了回答你的问题“* 如何从test1调用test2中的demo?*",我是这样做的。用
go run test1.go
命令运行这段代码。将 current_folder 更改为test1.go所在的 folder。测试1.go
文件库\测试2.go
将test2.go文件放入子文件夹
lib
中li9yvcax4#
一个实用、客观、简单的快速示例:
main.go
control.go
千万不要忘记:可见的外部函数、变量和方法以大写字母开头。
即:
pes8fvy95#
如果你只运行
go run test1.go
,而这个文件引用了同一个包中另一个文件的函数,它就会出错,因为你没有告诉Go语言运行整个包,而是告诉它只运行那个文件。你可以通过几种方式将文件分组为run命令中的一个包来告诉go作为一个完整的包运行。下面是一些例子(如果你的终端在你的包的目录中):
go run ./
或
go run test1.go test2.go
或
go run *.go
使用build命令也会有相同的行为,运行后创建的可执行文件将作为分组包运行,其中的文件知道每个函数等。示例:
go build ./
或
go build test1.go test2.go
或
go build *.go
然后,简单地从命令行调用可执行文件,将给予类似于当您将所有文件作为一个完整的包一起运行时使用run命令的输出。
./test1
或者在创建可执行文件时碰巧调用的任何文件名。
llycmphe6#
复制主文件.go
计数行。开始
go run ch1_dup2.go countLines.go abc.txt
go run *.go abc.txt
go build ./
go build ch1_dup2.go countLines.go
go build *.go
nukf8bse7#
您可以通过将另一个文件声明为模块来从另一个文件导入函数。请将这两个文件保存在同一个项目文件夹中。第一个文件
test1.go
应如下所示:从第二个文件中删除main函数,因为一个包中只能存在一个main函数。第二个文件
test2.go
应如下所示:现在,从任何一个将项目目录设置为工作目录的终端运行以下命令:
go mod init myproject
。这将在项目目录中创建一个名为go.mod
的文件。此mod
文件的内容可能如下所示:现在从终端简单地运行命令
go run .
!演示功能将根据需要从第一个文件开始执行!!6g8kf2rb8#
作为一个愚蠢的人谁不知道是怎么回事与go模块应该说:
1.创建你的主页. go
1.在同一个目录下在你的终端里写这个
go mod init "您的模块名称"
1.创建一个新目录并进入它
1.创建一个新的. go文件并将目录名写为包名
1.编写任何你想要的函数;请注意,您函数必须以大写字母开头
1.回到主屏幕去吧
import "您的模块名/您的新目录名"
1.最后你需要写的是包的名字和你的函数名在它后面
"新目录的名称"+.+ YourFunction()
1.并将其写入终端
快跑。
你可以写***go run main. go***代替.有时候你不想创建一个目录并且想在同一个目录中创建新的. go文件,在这种情况下你需要知道,用大写字母或不启动你的函数并不重要,你应该运行所有的. go文件
快跑 *.快跑
因为
去跑主街。去
不起作用。
dz6r00yl9#
让我试试。
首先
在根目录下,您可以运行
go mod init mymodule
(注意:mymodule
只是一个示例名称,请将其更改为您使用的名称)然后可能需要运行
go mod tidy
。文件夹结构如下所示
用于**./计算器/计算器.go**
第二
您可以导入
calculator
包并在main.go
中使用函数Sum
(* 注意,函数将使用大写命名 ),如下所示用于*./main.转到**
在那之后
你可以在根目录下运行这个命令。
结果将在控制台返回
3
。奖金:用于./go.mod
ps.这是我有史以来的第一个答案。我希望这对你有帮助。