Golang入门学习(4)

Go的第四课——运算符和控制流

运算符

自增(++)和自减(–)它是单独的语句,不属于运算符,其余的那些运算符跟 C 语言一模一样。

控制流

选择语句

选择结构依然是 if-else 和 switch 这两个分支语句,但是多了一个 select 语句。

if特性

没有什么过多的特性,无非就是 if 的条件不需要加括号以及后面的语句必须要和 if 在同一行。

1
2
3
4
5
6
7
if true{//通过

}
if true//不通过,因为大括号不与if在同一行
{

}

并且可以在 if 语句中进行初始化,比如下面这个例子。

1
2
3
if age:=1;age>=18{
fmt.Println("您已成年")
}

此时 age 的作用域在 if 语句中,出了这个语句这个变量失效。

switch特性

这里多了一个特性是不再会有下滑的过程。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package main

import "fmt"

func main() {
var i = 5
switch i {
case 5:
fmt.Print("hahaha")
case 6:
fmt.Print("hehehe")
default:
fmt.Print("yingyingying")
}
}

本来上面的例程当中,应该会输出三句话的,但是实际上只会输出一句 hahaha 看来每一个 case 自动加了 break,我感觉这样倒是更加不方便了,因为平时用 switch 语句本来也就图这个方便来着的,不过既然是语言特性那也记一下。

select 语句

涉及到点概念,先 mark 下,后来再来补。

循环语句

顺序选择循环依然是这三个结构,不同的是在循环结构中, golang 删除了典型的 while 和 do-while 两个循环语句,新增了 for range 语句。

for 循环

有点坑。

  • 若想在初始化部分新定义一个变量则只能使用 i:=0 的形式定义并初始化而不能使用 var 的方式声明变量。
  • 不需要添加括号,但是初始化,循环条件,循环语句必须使用分号分隔。
1
2
3
4
5
6
7
8
9
10
package main

import "fmt"

func main() {
var a = [...]int{0: 1, 1: 2, 2: 3, 3: 4, 4: 5, 5: 0}
for i := 0; i < 6; i++ {
fmt.Println(a[i])
}
}

for range循环

就跟 python 里面遍历数组差不多,但是需要给两个循环变量。

1
2
3
4
5
6
7
8
9
10
package main

import "fmt"

func main() {
var a = [...]int{0: 1, 1: 2, 2: 3, 3: 4, 4: 5, 5: 0}
for index, value := range a {
fmt.Printf("a[%d]=%d\n", index, value)
}
}

如果不想要其中一个变量则那个变量可以使用 _ 替代

1
2
3
4
5
6
7
8
9
10
package main

import "fmt"

func main() {
var a = [...]int{0: 1, 1: 2, 2: 3, 3: 4, 4: 5, 5: 0}
for _, value := range a {
fmt.Printf("%d\n", value)
}
}

当然还有一个比较好用的数据类型 map,其实就可以理解为 python 的 dict。

for range 同样可以遍历这样的数据类型,我们也可以选择性地拿 key 或者 value。

for range 的对象可以是字符串,这样遍历的时候我们会拿出每一个字符,跟 python 差不多。

小结

学到现在真的感觉 go 就是 C 和 python 亲生的一样。

文章目录
  1. 1. 运算符
  2. 2. 控制流
    1. 2.1. 选择语句
      1. 2.1.1. if特性
      2. 2.1.2. switch特性
      3. 2.1.3. select 语句
    2. 2.2. 循环语句
      1. 2.2.1. for 循环
      2. 2.2.2. for range循环
  3. 3. 小结
|