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,避免遗忘
- 先进后出,栈的特性
- 在代码块运行结束后执行
- 会拷贝当前值,即使传入的是指针
异常处理
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
}