Answers:
您main
的包裹中不能超过一个。
通常,包中给定名称的功能不能超过一个。
删除main
in test2.go
并编译应用程序。该demo
功能将从中可见test1.go
。
main
在test2.go中删除后,我可以构建并运行,但是go run test1.go
仍然无法运行test1.go 。为什么呢
go run test1.go test2.go
我在找同样的东西。要回答您的问题“ 如何从test1调用test2中的demo? ”,这就是我的方法。使用go run test1.go
命令运行此代码。更改current_folder到文件夹,其中test1.go是。
test1.go
package main
import (
L "./lib"
)
func main() {
L.Demo()
}
lib \ test2.go
将test2.go文件放在子文件夹中 lib
package lib
import "fmt"
// This func must be Exported, Capitalized, and comment added.
func Demo() {
fmt.Println("HI")
}
package lib; expected main
如果您只是运行go run test1.go
而该文件引用了同一软件包中另一个文件中的函数,则它将出错,因为您没有告诉Go运行整个软件包,而是告诉它仅运行该文件。
您可以通过以下几种方式将文件分组为一个包,从而告诉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
或任何可执行文件名在创建时都会被调用。
go fmt
?像在终端还是什么?这表明他在乎什么呢?