Go 快速开发 | 06 - Go 运算符与表达式

143 阅读4分钟

一、内置运算符

算数运算符

Go 语言中的算数运算符包含了 +、-、*、/、\%(取余),与其他语言中的算数运算符并无太大差异

func main(){

   fmt.Println("1+2 =",1+2)
   fmt.Println("3-2 =",3-2)
   fmt.Println("4*5 =", 4*5)

   fmt.Println("10/3 =", 10 / 3)
   fmt.Println("10/3 =", 10 / 3.0)
   fmt.Println("10%3 =", 10 % 3)
}

执行上述代码,输出结果如下:

1+2 = 3
3-2 = 1
4*5 = 20
10/3 = 3
10/3 = 3.3333333333333335
10%3 = 1

在进行除法运算时,如果都是整数进行除法运算,默认输出的结果也是整数,想要输出精确的浮点数则可以将其中一个整数改成浮点数即可。

除了上面五中运算符之外,Go 中还包含了 ++--,在 for 循环遍历时会经常用到。

关系运算符

关系运算符用于比较两个变量包含的值是否相等,返回值为 True 或者 False,包含了 ==, !=, >, >=, <, <=

func main(){

   var a int = 0
   var b int = 1

   var c string = "hello"
   var d string = "hello"

   fmt.Println(b == 1.0)
   fmt.Println(b == 1)
   fmt.Println(a > b)
   fmt.Println(c == d)
   fmt.Println(c > d)
   fmt.Println(c > "hallo")

}

执行上述代码,输出结果如下:

true
true
false
true
false
true

基本数据类型比较的都是值,字符串之间比较时会逐个比较字符串中的字符,一旦比较出结果就返回,对于arrayslicemapstruct等类型,当比较两个值是否相等时,是不能使用== 进行比较的

逻辑运算符

Go 中的逻辑运算符包含了 &&, ||, !

运算符描述
&&逻辑 AND 运算符,两边表达式都为 True 时,才会返回 True,否则返回 False
||逻辑 OR 运算符,两边表达式有一个为 True 时,就会返回 True,否则返回 False
!逻辑 NOT 运算符,如果条件为 True,则为 False
func main(){

   var age int = 18

   fmt.Println(age > 10 && age < 20)
   fmt.Println(age > 10 || age < 0)
   fmt.Println(!(age > 10))

}

执行上述代码,输出结果如下:

true
true
false

赋值运算符

Go 中也支持 += 运算符,既相加后在赋值,类似的还有 -=, *=, /=, %=

二、条件循环

if else 条件判断

if else 条件判断语句的基本写法

if 表达式 {
    // 代码块
} else if 表达式 {
    // 代码块
} else {
    
}
func main(){

   score := 59

   if score > 90 {
      fmt.Println("优秀Plus")
   } else if score > 80 {
      fmt.Println("优秀")
   } else if score > 70 {
      fmt.Println("良好")
   } else if score > 60 {
      fmt.Println("及格")
   } else if score > 0{
      fmt.Println("不及格")
   } else {
      fmt.Println("输入有误")
   }
}

Go 中通过 {} 来表示 if 语句的代码块,其中起始的 { 一定要和 if 在同一行,不可以另起一行,否则会报错。

Go 中的 if 表达式支持在 if 关键字后添加执行语句,但是要注意的是这里定义的 score 就相当于一个局部变量,只能够在 if 代码块中使用,其他地方使用会报错。

func main(){
   
   if score := 59; score > 90 {
      fmt.Println("优秀Plus")
   } else if score > 80 {
      fmt.Println("优秀")
   } else if score > 70 {
      fmt.Println("良好")
   } else if score > 60 {
      fmt.Println("及格")
   } else if score > 0{
      fmt.Println("不及格")
   } else {
      fmt.Println("输入有误")
   }
}

for 循环

for 循环可以用于遍历数组、切片或者字典中的元素

func main(){

   var scores []int = []int{60, 70, 77, 80, 73}

   for i := 0; i < len(scores); i++ {
      fmt.Println(scores[i])
   }
}

执行上述代码,输出结果如下:

60
70
77
80
73

for 循环实现 while 循环

Go 中是没有 while 语句的,可以使用 for 循环来代替 while 循环

func main(){

   for {
      fmt.Println("Hello")
   }
}

也可以在 for 关键字后添加条件表达式。

for range 循环

for range 遍历字典

func main(){

   var info = map[string]string{
      "name": "tony",
      "age": "18",
   }

   for k, v := range info {
      fmt.Println(k, v)
   }
}

执行上述代码,输出结果如下:

name tony
age 18

switch 语句

使用 switch 关键字可以很方便的对大量的 进行条件判断。

func main(){

   season := "春天"

   switch season {
   case "春天":
      fmt.Println("春天来了")
   case "夏天":
      fmt.Println("夏天来了")
   case "秋天":
      fmt.Println("秋天来了")
   case "冬天":
      fmt.Println("冬天来了")
   }
}

break、continue 关键字

类似其他语言,Go 中也可以使用 break 关键字和 continue 关键字

break 跳出循环(结束循环)

func main(){

   x := 1

   for {
      if x == 3 {
         break
      }
      x++
      fmt.Println(x)
   }
}

执行上述代码,输出结果如下:

2
3

continue 跳出当前循环,继续下一次循环

func main(){

   for i := 0; i < 10; i++ {
      if i % 2 == 0 {
         continue
      }
      fmt.Println(i)
   }
}

执行上述代码,输出结果如下:

1
3
5
7
9

本文正在参加技术专题18期-聊聊Go语言框架