# 常量
    基本类型的字面量表示(除了false和true 他们是预声明的有名常量) 都属于无名常量或者叫字面常量
    在Go中有些值的类型是不确定的， 这些值称为不确定值，对于大多数不确定值来说， 他们各自有一个默认类型， 除了声明的nil, nil是没有默认的类型的
    与不确定类型相对应的就是类型确定值

    一个字面（常）量的默认类型取决于它的它为何种字面量形式：
    一个字符串字面量的默认类型是预声明的 string 类型。
    一个布尔字面量的默认类型是预声明的 bool 类型。
    一个整数型字面量的默认类型是预声明的 int 类型。
    一个rune字面量的默认类型是预声明的 rune （亦即 int32 ）类型。
    一个浮点数字面量的默认类型是预声明的 float64 类型。
    如果一个字面量含有虚部字面量，则此字面量的默认类型是预声明的 complex128 类型。

## 类型转换
   对于一个类型不确定常量值 v ，有两种情形显式转换 T(v) 是合法的：
    1.v 可以表示为（第6章） T 类型的一个值。 转换结果为一个类型为 T 的类型确定常量值。
    2.v 的默认类型是一个整数类型（ int 或者 rune ） 并且 T 是一个字符串类型。 转换 T(v) 将 v 看作
    是一个Unicode码点。 转换结果为一个类型为 T 的字符串常量。 此字符串常量只包含一个Unicode
    码点，并且可以看作是此Unicode码点的UTF-8表示形式。 对于不在合法的Unicode码点取值范围
    内的整数 v ， 转换结果等同于字符串字面量 "\uFFFD" （亦即 "\xef\xbf\xbd" ）。  0xFFFD 是
    Unicode标准中的（非法码点的）替换字符值。 （但是请注意，今后的Go版本可能只允许rune或
    者byte整数被转换为字符串 ? 。 从Go官方工具链1.15版本开始， go vet 命令会对从非rune和非
    byte整数到字符串的转换做出警告。）

# 变量
    包级别的变量在声明的时候依赖关系将影响他们的初始化顺序

# 常量表达式
    当一个运算表达式所涉及的是所有操作都是常量的时候，此表达式称为一个常量表达式
    一个常量表达式的估值是在编译阶段进行的。一个常量表达式的估值依然是一个常量。
    如果一个表达式中涉及到的操作数中至少有一个不为常量，则此表达式称为非常量表达式
    
    类型确定的有名常量
        const x float32 = 3.14
    
    常量声明中的自动补全
    const (
        X float32 = 3.14
        Y // 这里必须只有一个标识符
        Z // 这里必须只有一个标识符
        
        A, B = "Go", "language"
        C, _
        // 上一行中的空标识符是必需的（如果
        // 上一行是一个不完整的常量描述）。
     )     
     自定补全为
    const (
        X float32 = 3.14
        Y float32 = 3.14
        Z float32 = 3.14
        
        A, B = "Go", "language"
        C, _ = "Go", "language"
    )    
# 在常量声明中使用iota
    iota是Go中预声明的一个特殊的有名常量 iota被预声明为0, 但是在编译阶段并非恒定
    
        

