PHP转Golang个人经验

循环

PHP中循环有for while do……while三种,而在golang中只有for

golang实现while

package main
import "fmt"
func main() {
    i := 0
    for {
        if i > 10 {
            break
        }
        fmt.Println("i=", i)
        i += 2
    }

}

golang实现do……while

package main
import "fmt"
func main() {
    i := 0
    for {
        fmt.Println("i=", i)
        i += 2

        if i > 10 {
            break
        }
    }

}

函数

Golang函数可以返回多个值

package main

import "fmt"

func swap(a int, b int) (int, int) {
    return b, a

}

func main() {
    a := 1
    b := 2
    a, b = swap(a, b)
    fmt.Println(a)
    fmt.Println(b)
}

defer

作用:常用于在函数运行结束时释放运用的资源,比如打开文件后直接defer close,避免遗忘

  1. 先进后出,栈的特性
  2. 在代码块运行结束后执行
  3. 会拷贝当前值,即使传入的是指针

异常处理

golang没有try catch 使用defer+recover来处理异常

func test() int {
defer func() {
    err := recover() //捕获异常
    if err != nil {
        fmt.Println("err=", err)
    }
}()
num1 := 10
num2 := 0
res := num1 / num2
return res
}