【发布时间】:2016-03-23 08:34:52
【问题描述】:
您使用的是什么版本的 Go(go 版本)? https://play.golang.org
你做了什么?
运行一个小程序:
package main
import "fmt"
const true = false
func main() {
if (true == false) {
fmt.Println("True equals to false")
}
fmt.Println("Hello World")
}
https://play.golang.org/p/KwePsmQ_q9
- 您希望看到什么?
错误或警告消息,我正在使用已定义的名称创建常量,并可能破坏整个应用程序。
- 您看到了什么?
运行没有问题。没有警告或任何东西来阻止创建具有已定义名称的新常量。
【问题讨论】:
-
有趣的事情。 “Var true = false”给出相同的结果。但是当我尝试声明一个包或导入时,我收到了这个错误:“prog.go:6: syntax error: unexpected package, expecting name prog.go:6: cannot declare name”
-
Why are 'new' and 'make' not reserved keywords? 的可能重复项它询问
new和make,但true也是predeclared identifier,这使得答案也适用于此。 -
关键字 (golang.org/ref/spec#Keywords) 和预先声明的标识符 (golang.org/ref/spec#Predeclared_identifiers) 都不是真假,你可以重新定义它们,这很好,就像整个语言一样工作。
标签: go