1. 常量
package main
import "fmt"
func main() {
/*
常量:
1.概念:同变量类似,程序执行过程中数值不能改变
2.语法:
显式类型定义: const b string = "abc"
隐式类型定义: const b = "abc"
3.常数:
固定的数值:100,"abc"
*/
fmt.Println(100)
fmt.Println("hello")
//1.定义常量
const PATH string = "http:www.baidu.com"
const PI = 3.14
fmt.Println(PATH)
//fmt.Println(PI)
//2.尝试修改常量的数值
//PATH = "http://www.sina.com" //cannot assign to PATH
//3.定义一组常量
const C1, C2, C3 = 100, 3.14, "haha"
const (
MALE = 0
FEMALE = 1
UNKNOW = 3
)
//4.一组常量中,如果某个常量没有初始值,默认和上一行一致
const (
a int = 100
b
c string = "ruby"
d
e
)
fmt.Printf("%T,%d
", a, a)
fmt.Printf("%T,%d
", b, b)
fmt.Printf("%T,%s
", c, c)
fmt.Printf("%T,%s
", d, d)
fmt.Printf("%T,%s
", e, e)
//5. 枚举类型:使用常量组作为枚举类型。一组相关数值的数据
const (
SPRING = 0
SUMMER = 1
AUTUMN = 2
WINTER = 3
)
// 注意:
// 常量中的数据类型只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型
// 不曾使用的常量,在编译的时候,是不会报错的
// 显示指定类型的时候,必须确保常量左右值类型一致,需要时可做显示类型转换。这与变量就不一样了,变量是可以是不同的类型值
}
2. iota
package main
import (
"fmt"
)
func main() {
/*
iota:特殊的常量,可以被编译器自动修改的常量
每当定义一个const,iota的初始值为0
每当定义一个常量,就会自动累加1
直到下一个const出现,清零
*/
const (
a = iota // 0
b = iota // 1
c = iota //2
)
fmt.Println(a)
fmt.Println(b)
fmt.Println(c)
const (
d = iota // 0
e // 1
)
fmt.Println(d)
fmt.Println(e)
//枚举中
const (
MALE = iota // 0
FEMALE // 1
UNKNOW // 2
)
fmt.Println(MALE, FEMALE, UNKNOW)
}
package main
import "fmt"
func main() {
const (
A = iota // 0
B // 1
C // 2
D = "haha" // iota = 3
E // haha iota = 4
F = 100 //iota =5
G //100 iota = 6
H = iota // 7
I //iota 8
)
const (
J = iota // 0
)
fmt.Println(A)
fmt.Println(B)
fmt.Println(C)
fmt.Println(D)
fmt.Println(E)
fmt.Println(F)
fmt.Println(G)
fmt.Println(H)
fmt.Println(I)
fmt.Println(J)
}