程序控制结构

作者: ffacs 分类: Golang 发布时间: 2020-03-09 08:48

代码格式

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键值对

使用 for range a {} 遍历数组和切片,不关心索引和数据的情况;

使用 for i := range a {} 遍历数组和切片,只关心索引的情况;

使用 for i, elem := range a {} 遍历数组和切片,关心索引和数据的情况;

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

发表评论

电子邮件地址不会被公开。 必填项已用*标注