go - 为什么 foo := foo() 不会导致错误?
问题描述
我试图理解为什么在 Go 中以下代码不会产生错误。
func main() {
foo := foo()
fmt.Println(foo)
}
func foo() int {
return 1
}
Foo 已经在全局范围内定义了,为什么我可以重新定义它?
解决方案
https://golang.org/ref/spec#Declarations_and_scope
在块中声明的标识符可以在内部块中重新声明。虽然内部声明的标识符在范围内,但它表示由内部声明声明的实体。
推荐阅读
- java - 如何拆分字符串并将它们存储在列表或地图中?
- ios - 代号一:纵向/横向和状态栏(和showBack)
- visual-studio-code - 如何在 VS Code 中运行方案程序
- postgresql - Postgsql 11 使用 UUID 创建对象但 beforeCreate 不会被触发以在保存之前使用 UUID 更新 id
- react-native - React Native Shopify StoreFront API GraphQL API 无限加载产品 fetchMore 错误
- reactjs - 代理不适用于 React.js 中的 fetch()
- python - Python:Pandas 比较两个数据帧并获取不同的行
- spring - 运行时的 Spring Batch 分区
- c++ - 合并排序没有输出我做错了什么?
- python - 如何使用 Selenium 和 Python 为用户代理设置自定义名称