我正在使用“ 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)一样读取。
打开文件的正确方法是什么?
您得到的错误表明您main()在同一程序包中有2个功能。
一个包可以包含许多文件。当您.go在其中运行go build命令的同一目录中有多个文件时,编译器将构建该main程序包。在这种情况下,它检测到main()功能重复,因此构建失败。
您要做的是指定要构建的文件:
go build helloworld.go
Run Code Online (Sandbox Code Playgroud)
使用指定的文件,go build将仅使用列出的文件进行构建。
有关更多信息,go build请参阅Golang文档。