Go语言学习笔记1 2020-11-17

2020-11-18  本文已影响0人  Jaeyok

两种传递方式

1.值传递
2.引用传递
值传递是值拷贝,引用传递是地址拷贝,地址拷贝效率高,值拷贝数据越大效率越低。

值类型和引用类型

1.值类型:基本数据类型Int, float, bool, string, 结构体struct。
2.引用类型:指针、Slice切片、map、管道channel、接口interface等

变量作用域

局部变量:仅限函数内部使用的变量

func test(){
   age:=10
   Name :="hello"
}

全局变量:函数外定义的,首字母大写在别的包也可以使用

var age int =50
var Name string = "leo" //其他包也可以使用
func test(){
   age:=10
   Name :="hello"
}

在代码块for/if, 变量作用率就只在该代码块。

for i:=0; i<=10;i++{
     fmt.Println(i) //外面无法使用i
}

Time相关函数

package main

//可变参数放在形参列表中最后
//init函数在Main之前执行

import (
    "fmt"
    "time"
)

func main()  {
    now :=time.Now()
    fmt.Println("年=%v", now.Year())
    fmt.Println("月=%v", int(now.Month()))
    fmt.Println("日=%v", now.Day())
    fmt.Println("时=%v", now.Hour())
    fmt.Println("分=%v", now.Minute())
    fmt.Println("秒=%v", now.Second())
    //格式化日期时间
    i:=0
    for {
        i++
        fmt.Println(i)
        time.Sleep(time.Millisecond*100)
        if i==100{
            break;
        }
    }

}

获取当前时间,求时间段

time.Now().Unix()

二、错误处理

使用defer+recover()函数来捕获错误,之后的代码可以被执行。

package main

//可变参数放在形参列表中最后
//init函数在Main之前执行
import (
    "fmt"

)
func test(){
    defer func(){
        if err:= recover(); err !=nil{
            fmt.Println("此函数程序发生出错")
        }
    }()
    num1 :=10
    num2:=0
    res :=num1/num2
    fmt.Println(res)

}
func main()  {
    test()
//defer panic, recover
    fmt.Println("以下代码将被继续执行")

}
上一篇 下一篇

猜你喜欢

热点阅读