首页 > 代码库 > Go基础2

Go基础2

//https://tour.golang.org package main

//  模块导入 import (  "fmt"  "math"  "runtime"  "time" )


 

//  redis 支持“发布/订阅”的消息模式,可以基于此构建聊天室等系统 //  redis 贡献者之一,使用该模式开发的聊天室的例子,https://gist.github.com/348262


 

// 模拟求开方的函数1,限制循环的次数为10

func sqrt_simulate_1(x float64) float64 {  z := 1.0  for i := 1; i < 10; i++{   z -= (z * z - x )/(2 * z)  }  return z }

// 优化的求开发,x不是很大的话,循环的次数会少

func sqrt_simulate_2(x float64) float64 {  z := 1.0  delta := 0.000000001  for i := 1; math.Abs((z * z - x )/(2 * z)) > delta; i++{   z -= (z * z - x )/(2 * z)   fmt.Println("---------call time:",i)  }  return z }


 

// switch 结构

func show_switch(){

 fmt.Print("Go runs on ")

 switch os := runtime.GOOS; os {  

 case "darwin":    fmt.Println("OS X.")   

case "linux":    fmt.Println("Linux.")

  default:    fmt.Printf("%s.", os)  }

}

// switch_evaluation_order

func switch_evaluation(){  

fmt.Println("When is Saturday?")  // 今天是星期几  

today := time.Now().Weekday()  // now_time := time.Now()  

// now_hour := time.Now().Hour()

 // now_min := time.Now().Minute()

 // now_sec := time.Now().Second()

 // fmt.Println(now_time, now_hour, now_min, now_sec)

 switch time.Saturday {   

case today + 0:    fmt.Println("Today.")

  case today + 1:    fmt.Println("Tomorrow.")

  case today + 2:    fmt.Println("2 days later.")   

default:    fmt.Println("Too far away.")

 }

}

// switch without a conditon ,可以用来做ie else else很长的那种逻辑

func switch_without_conditon(){  fmt.Println("Switch without a condtion")  t := time.Now().Hour()  switch {   case t < 12:    fmt.Println("Good morning.")   case t < 17:    fmt.Println("Good afternoon.")   default:    fmt.Println("Good evening.")

 } }


 

// defer,上下文都返回后才执行 // defer都放进栈里,后进先出

func show_defer()

{  

defer fmt.Println("Day")

 defer fmt.Println("fucking")

 fmt.Println("What")  fmt.Println("a")

}

 

func counting(){

 fmt.Println("Counting")

 for i := 1; i < 10; i++

{   defer fmt.Println(i)  }

 fmt.Println("Done")

}

 


 

func main(){  

fmt.Println(sqrt_simulate_1(2), math.Sqrt(2))  

fmt.Println(sqrt_simulate_2(2), math.Sqrt(2))

 fmt.Println(sqrt_simulate_2(70000), math.Sqrt(70000))

 show_switch()

 switch_evaluation()

 switch_without_conditon()

 show_defer()  counting()

}

Go基础2