今天是学习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!")
}
多学才有机会,主要本人比较笨