04-标识符和关键字 
在仓颉语言中,我们用到自定义的变量、函数、类等元素的名称,都必须用到标识符。我们可以也将刚才的变量、函数、类等看成是我们
可以在仓颉的这个世界中,自己给一些小朋友的名称。既然是要起名字,那么就有一些范围和一些限制。举个例子:我们不会给一个小孩
起这样的名字:卖75块钱眉笔的那个人。这样的名称不合法也不合理
标识符分类两类 
- 普通标识符
- 原始标识符
普通标识符 
普通标识符的命名规则有如下两种
- 两个组成部分【AB】,【A】部分表示英文字母开头,【B】可以是英文字母、数字、和下划线
- 三个组成部分【ABC】,【A】部分是一个或者多个下划线,【B】部分是英文字母,【C】部分可以是英文、数字、和下划线
正例 
c++
package project1 // 标记当前项目的名称
main() {
    let abc = "小万1"
    let abc123 = "小万"
    let _abc = "小万"
    let __ = "小万" // 两个下划线
    let _abc123 = "小万"
}反例 
c++
    let 123="小万"
    let *123="小万"
    let )123="小万"
    let +123="小万"
    let _="小万"// 1个下划线  可以声明,但是在打印它时,会提示错误原始标识符 
原始标识符在实际开发中有的场景不多,主要用在仓颉关键字作为标识符的场景。
可以理解为是让你可以定义一些特殊或者奇葩的名字。
原始标识符是在普通标识符或仓颉关键字的外面加上一对反引号
如
`abc`
`if`
`else`正例 
c++
package project1 // 标记当前项目的名称
// 结构体 if 作为奇葩的名字
struct `if` {
    let name = "小万"
}
main() {
    let a: `if` = `if`()
    println(a.name)
    println()
}关键字 
在仓颉语言中,它把一些名字作为的了仓颉的关键字或者保留字,意思是有特殊的用意,不能给我们开发者当成普通的标识符来使用。
如 let
let let = "小万" // 此时  let 就是错误的使用方式 因为let 是关键字关键字一览 
| 关键字 | 关键字 | 关键字 | 
|---|---|---|
| as | abstract | break | 
| Bool | case | catch | 
| class | const | continue | 
| Rune | do | else | 
| enum | extend | for | 
| func | false | finally | 
| foreign | Float16 | Float32 | 
| Float64 | if | in | 
| is | init | import | 
| interface | Int8 | Int16 | 
| Int32 | Int64 | IntNative | 
| let | mut | main | 
| macro | match | Nothing | 
| open | operator | override | 
| prop | public | package | 
| private | protected | quote | 
| redef | return | spawn | 
| super | static | struct | 
| synchronized | try | this | 
| true | type | throw | 
| This | unsafe | Unit | 
| UInt8 | UInt16 | UInt32 | 
| UInt64 | UIntNative | var | 
| VArray | where | while | 
总结 
标识符的作用就是在告诉我们 怎么起名字是合理,大家按照正常起名字的意思来对待即可。