在函数中,程序员经常创建资源(比如:数据库得连接,锁等),为了在函数执行完毕后,及时得释放资源,defer 就可以使用了(延时机制)
示例:
str:="你好,abc"
for i := 0; i <len(str); i++ {
fmt.Printf("i: %c\n", str[i])
}
打印输出
i: äi: ½i: i: åi: ¥i: ½i: ,i: ai: bi: c
因为含有中文字符,如果不进行转换,则打印输出会乱,不是我们想要的结果
str:="你好,abc"
arr:=[]rune(str)
for i := 0; i <len(arr); i++ {
fmt.Printf("i: %c ", arr[i])
}
打印输出
i: 你 i: 好 i: , i: a i: b i: c
//strconv.Atoi 有2个返回值,一个是转换成功的数值,一个是转换不成功的错误返回
num,err:=strconv.Atoi("123")
if err != nil{
fmt.Printf("err: %v\n", err)
}else{
fmt.Printf("num: %v\n", num)
}
//第一个参数是需要匹配的字符串
//第二个参数是需要替换字符串
//第三个是要替换的字符串
//第四个是如果有多个要替换的字符串,那么代表要替换的数量 -1为全部替换
num:=strings.Replace("hhhhh,world","h","北京",1)
//根据,分割;返回字符串数组切片
num:=strings.Split("h,h,h,h,h,world",",")
fmt.Printf("type=%T,num=%v\n", num,num)
打印结果
type=[]string,num=[h h h h h world]
// Now返回当前本地时间
now:=time.Now()
fmt.Printf("now: %v\n", now)
now:=time.Now()
fmt.Printf("年: %v\n", now.Year())
now:=time.Now()
fmt.Printf("月: %v\n", now.Month())//英文月
fmt.Printf("月: %v\n", int(now.Month()))//数字月
now:=time.Now()
fmt.Printf("日: %v\n", now.Day())
now:=time.Now()
fmt.Printf("时: %v\n", now.Hour())
now:=time.Now()
fmt.Printf("分: %v\n", now.Minute())
now:=time.Now()
fmt.Printf("秒: %v\n", now.Second())
// Now返回当前本地时间
now:=time.Now()
//返回当前时间格式为年月日时分秒【2006/01/02 15:04:05为固定值;不可变】
//由来2006为Golang诞生时间,15是下午3点。
//帮助记忆的方法:1月2日3点4分5秒,2006年,-7时区,正好是1234567。
//2006/01/02 15/04/05 可以自由组合返回时间
date:=now.Format("2006-01-02 15:04:05")
fmt.Printf("date: %v\n", date)
Nanosecond Duration = 1 //1纳秒
Microsecond = 1000 * Nanosecond //1微妙=1000*纳秒
Millisecond = 1000 * Microsecond //1毫秒=1000*1微妙
Second = 1000 * Millisecond //1秒=1000*1毫秒
Minute = 60 * Second //1分钟=60*1秒
Hour = 60 * Minute //1小时=60*1分钟
// Now返回当前本地时间
now:=time.Now()
unix:=now.Unix()
unixnano:=now.UnixNano()
fmt.Printf("unix: %v\n", unix)
fmt.Printf("unixnano: %v\n", unixnano)
//打印结果
// unix: 1658126367
//unixnano: 1658126367931653600
//定义一个匿名函数
defer func () {
//recover()函数可以捕捉到异常
err:=recover()
//如果捕捉到了异常就输出异常信息
if err !=nil{
fmt.Printf("err: %v\n", err)
}
}()
panic("终止程序,并输出错误")
package main
import (
"errors"//引用包
"fmt"
)
func main(){
err:= errors.New("我是自定义错误")
fmt.Printf("err: %v\n", err)
}