Skip to content

Latest commit

 

History

History
62 lines (49 loc) · 1.36 KB

Chap02_FlowControl.md

File metadata and controls

62 lines (49 loc) · 1.36 KB

For

go语言中只有一个循环结构,就是for

for循环由3部分组成,由分号分割:

  1. 初识语句,在第一次循环前执行,一般是一个短赋值语句,该变量仅在for循环中可见;
  2. 条件表达式,每次循环前执行;
  3. 后语句,在每次循环后执行;
  4. 初识语句和后语句是可以省略的;
  5. 如果没有分号,可以直接把for当作while

for后的3个语句没有括号,而且大括号是必须的。

if

for语句类似,没有括号,但是必须有大括号; if开始处可以有一个短赋值语句,产生的变量的作用域只有if和他相应的else语句本身

if v := math.Pow(x, y); v < lim {
    return v
}

循环及函数

package main

import (
	"fmt"
	"math"
)

func Sqrt(x float64) float64 {
	z := 1.0
	delta := 0.000000000001
	for {
		// 注意导数的使用方法
		if z*z == x ||  math.Abs(z*z - x) <= delta{
			fmt.Println(z*z - x)
			break
		}else{
			z = z - (z * z -x)/(2*z)
		}
		
	}
	return z
}

func main() {
	fmt.Println(Sqrt(2))
}

Switch

  1. go中的switch自动会加入break
  2. switch的值不需要是常量,也不需要是整型
  3. 可以用switch代替长长的if else链。

defer

  1. 在函数结束后执行,用于关闭资源等
  2. 多个defer为堆栈结构, FILO,后进先出。