go - 为什么允许 "const true = false"?

标签 go

  1. 您使用的是哪个版本的 Go(go 版本)? https://play.golang.org

  2. 你做了什么?

运行一个小程序:

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

  1. 您希望看到什么?

我正在使用已定义的名称创建常量并可能破坏整个应用程序的错误或警告消息。

  1. 你看到了什么?

运行没有问题。没有警告或任何阻止创建具有已定义名称的新常量的内容。

最佳答案

truefalse 不是保留关键字。这些是预先声明的标识符。

const (
        true  = 0 == 0 // Untyped bool.
        false = 0 != 0 // Untyped bool.
)

这意味着 truefalse 是简单的两个未类型化的 bool 值。这就是在您的示例中 true 等于 false 的原因。

https://golang.org/pkg/builtin/#pkg-constants

关于go - 为什么允许 "const true = false"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36173222/

相关文章:

go - 如何确定选择器是在第一个还是最后一个位置

go - 不能在 Go 中使用 "go"作为变量名

json - 如何使用 Go 创建这个 JSON

go - 学习go,想搞清楚exec包。我可以通过哪些方式改进我的代码?

go - 跨多个项目构建具有 vendor 依赖关系的 Go 项目

go - 使用 GO 语言和 USB GSM 调制解调器发送和接收 SMS

go - Go语言如何做error http错误处理

angularjs - 从 angularJS 发送 JSON 数据,以便 Go 服务器可以解析为结构

go - 如何有效地在 golang 中存储对文件的 html 响应

go - 如何在 Go 中列出所有非标准/自定义包?