登录
首页 >  Golang >  Go问答

"为什么在“package main”中重复声明“func main”是错误的?"

来源:stackoverflow

时间:2024-03-15 14:27:37 401浏览 收藏

IT行业相对于一般传统行业,发展更新速度更快,一旦停止了学习,很快就会被行业所淘汰。所以我们需要踏踏实实的不断学习,精进自己的技术,尤其是初学者。今天golang学习网给大家整理了《"为什么在“package main”中重复声明“func main”是错误的?"》,聊聊,我们一起来看看吧!

问题内容

请帮助我理解为什么“package main”中重复的“func main”是错误的。 vc 中的错误:“在此块中重新声明了 main”。

// $ tree
// .
// ├── main.go
// ├── second.go

// ```go build main.go```
// or 
// ```go build .```


// file: main.go
package main

import (
    "fmt"
)

func main() {
    fmt.Println("this is file MAIN")
}

// file: second.go
package main

import (
    "fmt"
)

func main() {
    fmt.Println("this is file SECOND")
}

我可以构建/运行这个: go build/run main.go - 正确 去构建/运行。 - 错误


解决方案


不能在同一个包中的包级别声明两次相同的符号。

如果您在同一个文件夹中有 2 个文件,并且都具有 package main 声明,那么这正是您正在做的事情。这就是您的 IDE 抱怨的原因:它尝试将这 2 个文件构建/编译为一个包,与编写 go build . 相同:这指定当前文件夹中的包,包括所有源文件。

go run main.gogo run secondary.go 之所以有效,是因为您指定要构建的文件(更具体地说是单个文件),而不是包。并且将单个 main.gosecond.go 用作 main 包并不违反上述规则:每个文件仅包含 main() 函数一次。

简而言之:go run main.go 忽略 second.go

通常,如果您想在同一项目中创建具有多个 main() 函数的多个应用程序,最简单的方法是将不同的 main() 函数放在不同的文件夹中,通常放在 cmd 文件夹中。

See Command Go:

另见What does go build build?

以上就是《"为什么在“package main”中重复声明“func main”是错误的?"》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>