你使用什么版本的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")
}
Run Code Online (Sandbox Code Playgroud)
https://play.golang.org/p/KwePsmQ_q9
错误或警告消息,我正在使用已定义的名称创建常量,并可能破坏整个应用程序.
运行没有问题.没有任何警告或任何东西阻止使用已定义的名称创建新常量.
true并且false不是保留关键字.这些是预先声明的标识符.
const (
true = 0 == 0 // Untyped bool.
false = 0 != 0 // Untyped bool.
)
Run Code Online (Sandbox Code Playgroud)
这意味着,true和false是简单的两个类型化布尔值.这就是你的例子true中等于的原因false.
https://golang.org/pkg/builtin/#pkg-constants