1.基础知识补充(指针、递增递减语句)
指针
go虽然保留了指针,但是与其它编程语言不同的是,在go当中不支持指针运算以及"->"运算符,而直接采用"." 选择符来操作指针目标对象的成员
- 操作符"&"取变量地址,使用"*"通过指针间接访问目标对象
- 默认值为nil而非null
在go中,++与--是作为语句而并不是作为表达式
a := 1
a++
//但不能这样:a := a++,只能作为单独的语句独占一行
2.if判断语句
条件表达式没有括号
支持一个初始化表达式(可以是并行方式)
左大括号必须和条件语句或else在同一行
支持单行模式
初始化语句中的变量为block级别,同时隐藏外部同名变量
func main(){
a := 10
if a:=1 {
fmt.Println(a)
}
fmt.Println(a)
}
//输出为: 1 10
3.for循环语句
- go只有for一个循环语句关键字,但支持3种形式
//第一种(同其他语言的while true {}):
func main() {
a := 1
for {
a++
if a > 3{
break
}
}
fmt.Println(a)
}
//第二种(同其他语言的:while a <= 3 {}):
func main() {
a := 1
for a <= 3 {
a++
}
fmt.Println(a)
}
//第三种:
func main() {
a := 1
for i := 0; i <= 3; i++ {
a++
}
fmt.Println(a)
}
- 初始化和步进表达式可以是多个值
4.switch选择语句
go语言中无须对每个case手动书写break以阻止程序继续向下匹配。如果要达到继续匹配的目的可以使用关键字:fallthrough
func main() {
a := 1
switch a {
case 0:
fmt.Println("a=0")
case 1:
fmt.Println("a=1")
}
fmt.Println(a)
}
func main() {
a := 1
switch {
case a >= 0:
fmt.Println("a=0")
fallthrough
case a >= 1:
fmt.Println("a=1")
}
fmt.Println(a)
}
//此时a的作用域只在switch表达式之内
func main() {
switch a := 1 {
case a >= 0:
fmt.Println("a=0")
fallthrough
case a >= 1:
fmt.Println("a=1")
}
fmt.Println(a)
}
5.跳转语句
break、continue、goto 配合标签使用