在另一个go程序中打开go文件

Har*_*nya -4 go

我正在使用“ Go编程语言”这本书学习Go。第一章介绍了os.Open用于读取文件的模块。我尝试打开如下所示的go文件。

  f, err = os.Open("helloworld.go")
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

   # command-line-arguments
.\helloworld.go:6:6: main redeclared in this block
        previous declaration at .\dup2.go:10:6
Run Code Online (Sandbox Code Playgroud)

我想了解为什么go表现得像是在尝试编译文件而不是像其他语言(Python,Java或C)一样读取。

打开文件的正确方法是什么?

FuX*_*Shu 6

您得到的错误表明您main()在同一程序包中有2个功能。
一个包可以包含许多文件。当您.go在其中运行go build命令的同一目录中有多个文件时,编译器将构建该main程序包。在这种情况下,它检测到main()功能重复,因此构建失败。

您要做的是指定要构建的文件:

go build helloworld.go
Run Code Online (Sandbox Code Playgroud)

使用指定的文件,go build将仅使用列出的文件进行构建。

有关更多信息,go build请参阅Golang文档