一、var和const
(分别申明变量和常量)除非是全局变量或者是任意位置的常量,否侧定义了就一定要使用
:=方法只有变量才有
1. 多变量同时定义值 [单个变量同理, 命名时,首个单词小写, 每个独立单词首字母大写]
var name1, name2, name3 string = "name1", "name2", "name3" //也可以不声明参数类型
const age int = 10
值为所谓的字面量,参数为常量或变量;当未赋值[var name1 int],则数值类型是0,bool值是false,字符串是空。
name1, name2, name3 := "name1", "name2", "name3"
二、变量声明但未赋值的情况
*这个情况下,值就是定义时指定类型的零值当在一个const下,每有一个变量产生,iota+1, 当赋值给变量一个新值,产生独立值,iota默认+1,并在变量=iota后恢复计数,继续统计
int->0
float->0.0
bool->false
string->""
二、特殊常量关键字--iota
1.iota只能在常量的表达式中使用
fmt.Println(iota)
编译错误: undefined: iota
2.每次 const 出现时,都会让 iota 初始化为0.
const a = iota // a=0
const (
b = iota //b=0
c //c=1
)
3.自定义类型
自增长常量经常包含一个自定义枚举类型,允许你依靠编译器完成自增设置。
type Stereotype int
const (
TypicalNoob Stereotype = iota // 0
TypicalHipster // 1
TypicalHipster = iota TypicalUnixWizard // 2
TypicalUnixWizard = iota TypicalStartupFounder // 3
TypicalStartupFounder = iota
)
4、位掩饰表达式
type Allergen int
const (
IgEggs Allergen = 1 << iota // 1 << 0 which is 00000001
IgChocolate // 1 << 1 which is 00000010
IgNuts // 1 << 2 which is 00000100
IgStrawberries // 1 << 3 which is 00001000
IgShellfish // 1 << 4 which is 00010000
)
5、定义在一行
const (
Apple, Banana = iota + 1, iota + 2 //1,2
Cherimoya, Durian //2,3
Elderberry, Fig
) //3,4
6、当在一个const下,每有一个变量产生,iota+1, 当赋值给变量一个新值,产生独立值,iota默认+1,并在变量=iota后恢复计数,继续统计