您使用的是哪个版本的 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
- 您希望看到什么?
我正在使用已定义的名称创建常量并可能破坏整个应用程序的错误或警告消息。
- 你看到了什么?
运行没有问题。没有警告或任何阻止创建具有已定义名称的新常量的内容。
最佳答案
true
和 false
不是保留关键字。这些是预先声明的标识符。
const (
true = 0 == 0 // Untyped bool.
false = 0 != 0 // Untyped bool.
)
这意味着 true
和 false
是简单的两个未类型化的 bool 值。这就是在您的示例中 true
等于 false
的原因。
关于go - 为什么允许 "const true = false"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36173222/