程序控制结构


代码格式

Go中强制了{}的格式,{必须与函数声明同一行。

条件语句

if else

Go中的if除了不需要()强制要求{}以外,与c/c++中的if差别不大

if可以在条件语句之前执行一个简单语句

elseelse if必须跟}同一行

package main

import "fmt"

func main() {
 a := 1
 b := 1
 if a = 2; a == 2 && b == 1 {
  fmt.Println("Hello") //Hello
 }
}

甚至是声明变量,作用域在if..else if..else

package main

import (
 "fmt"
 "math"
)

func main() {
 if v := math.Pow(2, 3); v < 9 {
  fmt.Println(v)
 } else if v < 100 {
  fmt.Println(v + 1)
 } else {
  fmt.Println(v + 2)
 }
}

switch

关于switch的几点说明如下:

  • switch的判断条件可以为任何数据类型。

  • 每个case后面跟的是一个完整的程序块,该程序块不需要{},也不需要break结尾,因为每个case都是独立的。

  • 可以为switch提供一个默认选项default,在上面所有的case都没有满足的情况下,默认执行default后面的语句。

    switch(...){
    case ...:
       ...
    case ...:
       ...
    ...
    
    default:
        ...
    }

    循环语句

for

Go中没有while,只有forfor除了不需要()强制要求{}以外,与c/c++中的for差别不大

for的while版写法

package main

import (
 "fmt"
)

func main() {
 var i int = 1

 for i <= 100 { // 没有分号
  fmt.Println(i)
  i++
 }
}

for true

for{
 ...
}

range关键字

range是go中的一个关键字,可以用在for循环中来迭代可迭代的对象,返回index-value键值对

  1. 分析遍历数组和切片清空元素的情况;
  2. 分析使用 for range a {} 遍历数组和切片,不关心索引和数据的情况;
  3. 分析使用 for i := range a {} 遍历数组和切片,只关心索引的情况;
  4. 分析使用 for i, elem := range a {} 遍历数组和切片,关心索引和数据的情况;
package main

import "fmt"

func main() {
 var x = [...]string{
  "a",
  "b",
  "c"}
 for _, tem := range x {
  fmt.Println(tem)
 }
}

文章作者: ffacs
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 ffacs !
  目录