为什么Go语言的Token类型中没有对应Bool的定义?
Go
token包无Bool类型Token定义的核心原因 你查阅的Go1.17版本token.go的设计逻辑和所有Go稳定版本的规则一致,没有Bool类型Token不属于版本遗漏,是由包的定位和语法规范共同决定的:
go/token包的核心定位是定义词法分析阶段的所有词法单元标记,不承载类型系统层面的类型分类逻辑。如果你需要布尔类型的分类定义,可以在go/types包中找到对应实现,该能力不属于go/token的职责范围。- 布尔相关的词法单元已经被现有标记完全覆盖:布尔字面量
true、false分别对应包中已定义的token.TRUE、token.FALSE两个独立标记,不需要额外新增聚合性的Bool Token。 bool作为类型名本身属于预声明标识符,词法分析阶段会被识别为token.IDENT标记,完全符合Go语法规范中对词法单元的定义,没有单独列为内置Token的必要。
内容的提问来源于stack exchange,提问作者John Nyingi
相关产品推荐
相关产品推荐

