【问题标题】:Why is "const true = false" allowed?为什么允许“const true = false”?
【发布时间】:2016-03-23 08:34:52
【问题描述】:
  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. 您看到了什么?

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

【问题讨论】:

标签: go


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2016-10-25
    • 2011-10-09
    • 2012-01-09
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 2018-02-05
    • 2021-11-01
    • 2015-10-03
    相关资源
    最近更新 更多