5
您使用的是哪個版本的Go(版本)? https://play.golang.org爲什麼允許「const true = false」?
你做了什麼?
運行一個小程序:
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:語法錯誤:意外的包,期待名稱 prog.go:6:不能聲明名稱」 – Vityata
可能重複[爲什麼是'新'和'使'不保留關鍵字?](http://stackoverflow.com/questions/31987772/why-are-new-and-make-not-reserved-keywords)它詢問'新'和'make',但是'true'也是[預先聲明的標識符](https://golang.org/ref/spec#Predeclared_identifiers),這也使得這裏的答案也適用。 – icza
關鍵字(https://golang.org/ref/spec#Keywords)既不是真的也不是假的,但是預先聲明的標識符(https://golang.org/ref/spec#Predeclared_identifiers)並且你重新定義了它們,它們很好,整個語言。 – Volker