Go语言学习Day03

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Giser_D/article/details/90709641

今天是学习go的第三天,早上6点起床,有点睡迟了,希望以后不要了,然后隔离手机,会发现生活还是很美好的。

今天学习了for,if,switch,defer等语句

一、for循环;

for循环形式就是 for变量申明 ;循环终止条件; {

     实现方法

}

//学习for语句
//for语句通用格式跟C++很像,主要是不加括号和变量声明
//但是需要大括号
package main

import "fmt"

func main(){
	sum:= 0
	for i:=0;i<10;i++{
		sum+=i
	}
	fmt.Println(sum)
}

循环条件可以省略第一个 但是分号需要添加 

 

package main

import "fmt"

func main(){
	sum:= 1
	for ;sum < 10;sum++{
		sum+=sum
	}
	fmt.Println(sum)
}
//for循环,无条件循环
package main

func main()  {
	for{
		}
}

 二、if语句

if语句写法和其他语言写法基本是一样的。

然后重点是if前面不需要加括号

 

//if语句写法:
package main

import (
	"fmt"
	"math"
)
//fmt.Sprint:输出字符串

func sqrt(x float64) string {
	if x < 0{
		return sqrt(-x) + "i"
	}
	return fmt.Sprint(math.Sqrt(x))
}

func main(){
	fmt.Println(sqrt(36))
}

if语句里面变量声明方式如下: 

package main

import (
	"fmt"
	"math"
)

func pows(x,n,lim float64)float64{
	if v:=math.Pow(x,n);v<lim{
		return v
	}else{
		fmt.Printf("%g >= %g\n",v,lim)
	}
	//这里开始不能使用v v只能在if和else 判断语句中使用
	return lim
}

func main(){
	fmt.Println("当前结果为",pows(2,3,4))
}
package main

import (
	"fmt"
)

func Sqrt(x float64)float64{
	//实现平方根函数
	var z float64=1 //声明变量
	for i:=0;i<10;i++{
		z = z - (z*z-x)/(2*z)
		fmt.Println(z,"\n")
	}
	return 0
}

func main(){
	Sqrt(2)
}

三、Switch语句:

switch语句可以省略switch的对象,这点很牛逼了,感觉go语言就是能省尽量省的感觉。 

package main

import (
	"fmt"
	"time"
)

//switch 可以省略条件语句,更加的go写法
func main(){
	t:=time.Now()
	switch  {
	case t.Hour() <12:
		fmt.Println("Hwllo")
	case t.Hour() < 17:
		fmt.Println("ddd")
	default:
		fmt.Println("OK")
	}
}
package main

import (
	"fmt"
	"math"
)

//if语句这边可以先进行赋值操作,然后再进行if比较(特性)
func pow(x,n,lim float64) float64 {
	if v:=math.Pow(x,n);v<lim{
		return v
	}
	return lim
}

func main(){
	fmt.Println(
		pow(3,2,10),
		pow(1,4,19),
		)
}
//学习switch语句
package main

import (
	"fmt"
	"runtime"
)

//runtime.GOOS 表示获取当前运行环境的操作系统
//switch语法比较像if语句,均可以在开头申明变量,用;隔开
func main(){
	fmt.Println("Go runs on ")
	switch  os := runtime.GOOS;os{
	case "darwin":
		fmt.Println("OS X.")
	case "linux":
		fmt.Println("Linux")
	default:
		fmt.Printf("%s \n",os)
	}
}

package main

import (
	"fmt"
	"time"
)

func main(){
	fmt.Println("When's Saturday")
	today:= time.Now().Weekday()
	switch time.Saturday {
	case today+0:
		fmt.Println("Today.")
	case today+1:
		fmt.Println("Tomorrow")
	case today+2:
		fmt.Println("In two days")
	default:
		fmt.Println("Too far away")

	}
}

五、While语句:这个也是Go语言的特色了,While语句写法其实就是for语句去掉两个分号,加上判断条件:感觉这才是go的灵魂之一,毕竟并发还没学。 

 

//不加分号的for语句指的是while语句
package main

import "fmt"

func main()  {
	sum:=1
	for sum<23{
		sum+=3
	}
	fmt.Println(sum)
}

六、Defer语句:

defer 执行方法 

//defer语句用法,就是defer后面跟的语句,会在外层函数执行完后执行
package main

import "fmt"

func main(){
	defer fmt.Println("world")
	fmt.Println("hello")
}

 多个defer语句时,遵循后进先出的原则!

package main

//多个defer遵循后进先出原则
import "fmt"

func main(){
	fmt.Println("counting")
	for i:=0;i<10;i++{
		defer fmt.Println(i)
	}
	fmt.Println("done!")
}

多学才有机会,主要本人比较笨

猜你喜欢

转载自blog.csdn.net/Giser_D/article/details/90709641