Go命令获取关键字或保留字列表?



在python中,他们提供了通过

列出其中关键字的命令
>>> import keyword
>>> print(keyword.kwlist)
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']

在go中有类似的方法吗?

token包有一个功能IsKeyword。代码检查

中的字符串是否存在。
var keywords map[string]Token

不幸的是,这个变量没有导出。但是您可以像在标准库中那样构建相同的映射:

func init() {
keywords = make(map[string]Token)
for i := keyword_beg + 1; i < keyword_end; i++ {
keywords[tokens[i]] = i
}
}

keyword_begkeyword_end是常量值,表示关键字常量的开始和结束。这些也不能导出,但您仍然可以使用该值(解析为60和86)。

因此,将int值从60到86转换为token.Token,然后调用Token.String。这样的

tokens := make([]token.Token, 0)
for i := 61; i < 86; i++ {
tokens = append(tokens, token.Token(i))
}
fmt.Println(tokens)

最新更新