Go语言 label标签和枚举介绍及使用示例
目录
标签label
标签和goto
设置标签,并在标签中判断符合条件后,跳到指定标签位置。
示例如下:
Go
package main
import "fmt"
func main() {
LABEL1:
for i := 0; i < 5; i++ {
for j := 0; j < 5; j++ {
if j == 3 {
goto LABEL1
}
fmt.Println("i:", i, ",j:", j)
}
}
fmt.Println("end------")
}
下次进入循环时,i不会保存之前的状态,重新从0开始计算,重新来过,无限循环。
c ontinue
会跳到指定的位置,但是会记录之前的状态,i变成1。
示例如下:
Go
func main() {
LABEL1:
for i := 0; i < 5; i++ {
for j := 0; j < 5; j++ {
if j == 3 {
continue LABEL1
}
fmt.Println("i:", i, ",j:", j)
}
}
fmt.Println("end------")
}
运行结果:
bash
i: 0 ,j: 0
i: 0 ,j: 1
i: 0 ,j: 2
i: 1 ,j: 0
i: 1 ,j: 1
i: 1 ,j: 2
i: 2 ,j: 0
i: 2 ,j: 1
i: 2 ,j: 2
i: 3 ,j: 0
i: 3 ,j: 1
i: 3 ,j: 2
i: 4 ,j: 0
i: 4 ,j: 1
i: 4 ,j: 2
end------
break
直接跳出指定位置的循环。
示例如下:
Go
func main() {
LABEL1:
for i := 0; i < 5; i++ {
for j := 0; j < 5; j++ {
if j == 3 {
break LABEL1
}
fmt.Println("i:", i, ",j:", j)
}
}
fmt.Println("end------")
}
运行结果:
bash
i: 0 ,j: 0
i: 0 ,j: 1
i: 0 ,j: 2
end------
枚举
在go语言中没有枚举类型,但是我们可以使用const + iota(常量累加器)来进行模拟。
代码示例
示例如下:
Go
package main
import "fmt"
func main() {
// 定义变量
//var number int
//var name string
//var flag bool
// 可以使用变量组来统一定义变量
/*var (
number int,
name string,
flag bool
)*/
// 模拟一个一周的枚举
const(
MONDAY = iota //0
TUESDAY //1
WEDNESDAY //2
THURSDAY //3
FRIDAY //4
SATURDAY //5
SUNDAY //6
M, N = iota, iota // const属于预编译期赋值,所以不需要:=进行自动推导
)
fmt.Println(MONDAY)
fmt.Println(TUESDAY)
fmt.Println(WEDNESDAY)
fmt.Println(THURSDAY)
fmt.Println(FRIDAY)
fmt.Println(SATURDAY)
fmt.Println(SUNDAY)
fmt.Println(M, N)
}
说明
1.iota是常量组计数器
2.iota从0开始,每换行递增1
3.常量组有个特点如果不赋值,默认与上一行表达式相同
4.如果同一行出现两个iota,那么两个iota的值是相同的
5.每个常量组的iota是独立的,如果遇到const iota会重新清零
总结
Go语言 label标签和枚举介绍及使用示例