1.常量的定义
--常量的值在编译时就已经确定
--常量的定义格式与变量的基本相同
--等号右侧必须是常量或者常量表达式
--常量表达式中函数必须是内置函数
const( PI = 3.14 SI = 1.15 CI = "test" ) const a int = 1 const b = 'A' //变量类型省略编译器自动判断 const c,d,e = 1,"2","A"
2.常量的初始化规则与枚举
--在定义常量组时,如果不提供初始化值,则表示将使用上行的表达式
const( f = 1 r K ) //上述代码,输出f,r,K都是等于1
--常量的初始化必须是常量:编译器在编译的过程中,因为ss为全局变量,是在程序运行的过程中计算的,在编译的时候并没有对它进行一个出来,所以在编译的时候这个len(ss)就是缺失的值;len函数是内置的函数
const( p,m = 1,2 v,j ) //这样输出的常量v,j,就是1,2 //如果是这样 const( p,m = 1,2 v ) //编译是不通过的,因为初始化规则的使用,每一行声明的常量的个数必须是一致的
--使用相同的表达式不代表具有相同的值
--枚举:iota是常量的计数器,从0开始,常量组中每定义1个常量自动增加1,通过初始化规则与iota可以达到枚举的效果
--每遇到一个const关键字,iota就会置为0
--想要使用枚举,必须在常量组中使用
const( a = "A" b c = iota d ) //上述输出a,b,c,d分别是:A A 2 3 //常量组中第一个常量的iota值是0,iota值只与常量声明的顺序有关
//常量的命名规则一般都是大写字母+下划线:MAX_NUM,最好常量是全部大写字母,不要有小写
//首字母大写就会被包的外部使用到
3.运算符:从左至右结合,操作数和运算符的结合
优先级:(从高到底) --^ ! (一元运算符) --* / % << >> & &^ --+ - | ^ (二元运算符) -- == != < <= >= > -- <- (专用于channel,并发) -- && //如果第一个条件都不满足,就直接跳过了代码块 -- ||
左移和右移:1代表B,左移10位变为KB,再左移10位的话就变成MB
和运算符:& 两个都是1的话,运算就是1;如果有一个不是1,运算就是0 ;(条件比较苛刻)
或运算符: | 如果有一个是1,那么它就成立了 ,运算就是1(条件不那么苛刻)
^ 在对比过程中,两位只有一个是1,它才可以成立,运算才得1
&^ 如果在第二个数上的第一位是1,就把第一个数中的第一位改为0;如果第二个数上的数字是0,就不对第一个数上对应位做任何操作
4.