Go条件语句

if

if 语句使用 tips:

  • 不需使用括号将条件包含起来
  • 大括号{}必须存在,即使只有一行语句
  • 左括号必须在if或else的同一行
  • 在if之后,条件语句之前,可以添加变量初始化语句,使用;进行分隔
  • 在有返回值的函数中,最终的return不能在条件语句中

Go中的if可以包含一个 statement 可选语句部分,该组件在条件判断之前运行。它的语法是:

1
2
if statement; condition {  
}

例子:

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

import (
"fmt"
)

func main() {
if num := 10; num % 2 == 0 { // 判断数字是否为偶数
fmt.Println(num,"偶数")
} else {
fmt.Println(num,"奇数")
}
}

switch-case

基本示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
package main

import "fmt"

func main() {
   /* 定义局部变量 */
   var grade string = "B"
   var marks int = 90

   switch marks {
      case 90: grade = "A"
      case 80: grade = "B"
      case 50,60,70 : grade = "C"
      default: grade = "D"  
   }

   switch {
      case grade == "A" :
         fmt.Printf("优秀!\n" )    
      case grade == "B", grade == "C" :
         fmt.Printf("良好\n" )      
      case grade == "D" :
         fmt.Printf("及格\n" )      
      case grade == "F":
         fmt.Printf("不及格\n" )
      default:
         fmt.Printf("差\n" );
   }
   fmt.Printf("你的等级是 %s\n", grade );      
}

执行结果:

1
2
优秀!
你的等级是 A

补充:case支持多条件匹配

1
2
3
4
switch{
case 1,2,3,4:
default:
}

fallthrough

使用 fallthrough 会强制执行后面的 case 语句,fallthrough 不会判断下一条 case 的表达式结果是否为 true。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
package main

import "fmt"

func main() {

    switch {
    case false:
            fmt.Println("1、case 条件语句为 false")
            fallthrough
    case true:
            fmt.Println("2、case 条件语句为 true")
            fallthrough
    case false:
            fmt.Println("3、case 条件语句为 false")
            fallthrough
    case true:
            fmt.Println("4、case 条件语句为 true")
    case false:
            fmt.Println("5、case 条件语句为 false")
            fallthrough
    default:
            fmt.Println("6、默认 case")
    }
}

执行结果:

1
2
3
2、case 条件语句为 true
3、case 条件语句为 false
4、case 条件语句为 true

从以上代码输出的结果可以看出:switch 从第一个判断表达式为 true 的 case 开始执行,如果 case 带有 fallthrough,程序会继续执行下一条 case,且它不会去判断下一个 case 的表达式是否为 true。


Go循环语句

Go中变量声明和赋值注意事项
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
package main

import "fmt"

//全局变量

var a int = 1
var b, c int = 2, 3

var a1 int
var b1, c1 int

//报错:
//a1 = 1
//b1, c1 = 2, 3

//报错:
//a1 := 1
//b1, c1 := 2, 3

var a2 = "a2"
var b2, c2 = "b2", "c2"

var (
a3 int = 2
b3 string
c3 float32
)

func main() {
a1 = 1
b1, c1 = 2, 3
a3, b3, c3 = 1, "2", 3
fmt.Println(a1, b1, c1, a3, b3, c3)

fmt.Println("////////")

//局部变量
var x = 1
y, z := 2, 3
fmt.Println(x, y, z)

//仅声明或赋值但是未使用,下面几种情况都会报错:
//var xyz = 1

//yxz := 1

//var zxy int
//zxy = 1

//var xzy int = 1
}

知识点总结

  • 全局变量可以允许仅声明/赋值,但是可以不使用
  • 局部变量不管以何种方式声明/赋值,必须要使用
  • 局部变量在作用范围内会替代掉同名的全局变量
  • 全局变量的声明和赋值操作不能分开进行
  • := 操作符只能在函数体内部使用
  • 任何变量不可以被重复声明

intVal := 1 等价于下面的两行代码:

1
2
var intVal int 
intVal =1

空白标识符_在函数返回时的用法:

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

import "fmt"

func main() {
_,numb,strs := numbers() //只获取函数返回值的后两个
fmt.Println(numb,strs)
}

//一个可以返回多个值的函数
func numbers()(int,int,string){
a , b , c := 1 , 2 , "str"
return a,b,c
}

输出结果

1
2 str