1、常量的初始化规则
2、枚举 iota的用法
在常量组中定义iota后,从0开始,每定义一个常量iota会自动加一,直到const重置为0
常量的代码规则,最好全部大写。大写时有public性质,当想只在包内使用时可以在常量定义前面加c
3、运算符是从左到右
4、语句中可以先初始化,再条件,此时初始化的值只在条件语句中有效,在条件语句外会未定义,
当条件语句中的变量名称和条件语句上面定义的变量名称相同时,
package main
import (
. "fmt"
)
// 条件语句写法
func main() {
if 1 > 0 {
Println("df")
}
}
//在条件语句中初始化变量
func main() {
if a := 2; a > 1 {
Println("df")
}
}
// Output:
// df
//当条件语句中的变量跟条件语句上面的变量名称相同时,在条件语句中起作用的是条件语句中的变量。
func main() {
a := 10
if a := 2; a > 1 {
Println(a)
}
Println(a)
}
// Output:
// 2
// 10
//当条件语句中的变量跟条件语句上面的变量名称相同时,条件语句中的变量只作用于条件语句中。
func main() {
if a := 2; a > 1 {
Println(a)
}
Println(a)
}
// Output:
// 程序报错,提示第二个Println(a)中的a undefined ,说明if中的变量a只作用于条件语句。
/////// for语句的定义和使用
package main
import (
. "fmt"
)
// for 循环语句写法 ,循环语句只有for,没有while,但是for的写法可以完全替代其他循环语句的功能
// for 循环有3种写法
//第一种,for 实现while功能的写法
func main() {
a := 1
for {
a++
if a > 10 {
break
}
Println(a)
}
Println(a, "over")
}
//第二种,for自带一种表达式,当满足条件执行,不满足时跳出,等同于while条件语句
func main() {
a := 1
for a < 3 { //TODO:当a<3条件成立时,执行for内部,当条件不成立时,for语句结束
a++
Println(a)
}
Println(a, "over")
}
//第三种,同c++ for 语句写法
func main() {
for a := 0; a < 3; a++ {
Println(a)
}
Println("over")
}
package main
import (
"fmt"
)
//switch 语句的写法
//第一种 常见的写法
func main() {
a := 1
switch a {
case 0:
Println("a = 0")
case 1:
Println("a = 1")
case 2:
Println("a = 2")
default:
Println("None")
}
} //Output:
//a = 1
//第二种,不在switch中做条件判断,将条件判断放到case中
func main() {
a := 2
switch {
case a > 1:
Println("a > 1")
case a == 2:
Println("a == 1")
case a < 1:
Println("a < 1")
default:
Println("None")
}
} //Output:
//a > 1
//注意的地方,golang中提供fallthrough的用法。怎么用,接着第二种情况讲
//如果case带有fallthrough,程序会继续执行下一条case,不会再判断下一条case的条件,如果之后的case都有fallthrough,default出会被执行。
func main() {
a := 2
switch {
case a > 1: //TODO:条件满足
fmt.Println("a > 1") //TODO:在满足条件时,执行完动作语句,没有遇到fallthrough,会直接break
fallthrough
case a > 2: //TODO:这里条件也满足,但是没有打印出结果,是因为上面已经break。如果想判断多个条件,不想break,可以在相应语句后面加fallthrough
fmt.Println("a == 1")
case a < 1:
fmt.Println("a < 1")
default:
fmt.Println("None")
}
} //Output:
//a > 1
package main
import . "fmt"
//goto break continue 用法
//这三个都可以添加标签,来定义程序执行的转折点,不同的是,goto是定义程序执行跳转到标签位置,而break和continue标签定义的是程序循环体的嵌套层级。
//进一步讲,break和continue标签的作用是将当前的程序跳到怎样的层级。
//举例讲解break和continue标签的作用
func main() {
LABEL1: //此处label定义了程序的层级是最外面
for {
for a := 0; a < 10; a++ {
break LABEL1 //TODO:这个break 到指定的label层级上,作用是将程序执行点跳出了所有的嵌套循环,直接跳到了最外层
}
}
Println("OK")
}
//Output: OK
func main() {
LABEL1: //此处label定义了程序的层级是最外面
for a := 0; a < 10; a++ {
for {
Println(a)
continue LABEL1 //TODO:这里的continue作用到了最外层的循环体,LABEL标记的就是最外层的层级
}
}
Println("OK")
}
//Output: OK