1.获取当前时间
now := time.Now()
fmt.Printf("now=%v\nnow type is %T", now, now)
2.time.Time是一个类型,专门用于表示时间
3.获取日期信息
now := time.Now()
// 通过now获取年月日时分秒
fmt.Printf("year=%v\n", now.Year())
fmt.Printf("month=%v\n", now.Month())
fmt.Printf("月=%v\n", int(now.Month()))
fmt.Printf("day=%v\n", now.Day())
fmt.Printf("hour=%v\n", now.Hour())
fmt.Printf("minute=%v\n", now.Minute())
fmt.Printf("second=%v\n", now.Second())
4.格式化日期和时间
笨比法
now := time.Now()
fmt.Printf("now=%v\nnow type is %T", now, now)
//format
fmt.Printf("date is %d-%d-%d\n", now.Year(),
now.Month(), now.Day());
dateStr := fmt.Sprintf("date is %d-%d-%d\n", now.Year(),
now.Month(), now.Day());
fmt.Printf("dateStr is %v\n", dateStr)
用Format方法
"2006/01/02 15:04:05"各个数字是固定的,必须这个时间!
now := time.Now()
fmt.Printf("now=%v\nnow type is %T\n", now, now)
//format
fmt.Printf(now.Format("2006/01/02 15:04:05"))
fmt.Println()
fmt.Printf(now.Format("2006/01/02"))
fmt.Println()
fmt.Printf(now.Format("2006-1-2"))
5.时间的常量const
只能用乘法,不能用除法
不能*小数
6.休眠Sleep
// 每隔0.1s打印数字 打印到10
for i :=0; i < 10; i++ {
fmt.Println(i + 1)
time.Sleep(time.Millisecond * 100)
}
7.unix时间戳 和 unixnano时间戳
now := time.Now()
fmt.Printf("unix time=%v\nunixnano time=%v\n",
now.Unix(), now.UnixNano())
8.golang的内置函数(build in)
len求长度
9.new用于分配内存,住主要用于分配值类型,如int、float、struct
返回的是一个指针
n1 := 100
fmt.Printf("type=%T\nval=%v\naddr=%v\n\n",
n1, n1, &n1)
n2 := new(int)
fmt.Printf("type=%T\nval=%v\naddr=%v", n2, n2, &n2)
n2指向的值为0
10.make用于分配内存,主要用于分配引用类型
11.go的错误处理方式:defer、panic、recover
在defer中通过recover捕获异常
func test() {
// defer+recover捕获处理异常
defer func() {
err := recover()
// if err := recover(); err != nil {
if err != nil {
fmt.Println("err=", err)
}
}()
n1 := 10
n2 := 0
res := n1 / n2
fmt.Println(res)
}
func main() {
test()
fmt.Println("code after panic")
}
12.go支持自定义错误,使用errors.New和panic内置函数
errors.New会返回一个error类型的值
panic接收一个interface类型的值(即任何值)作为参数。可以接收error类型的变量。输出错误信息,并退出程序。
func readConf(name string) (err error) {
if name == "config.ini" {
return nil
}else{
return errors.New("读取文件错误")
}
}
func test02() {
err := readConf("config2.ini")
if err != nil {
panic(err)
}
fmt.Println("test02() code after panic")
}
func main() {
test02()
fmt.Println("main() code after panic")
}
13.数字转字母
c := 'a'
for i := 0; i < 26; i++ {
fmt.Printf("%c", byte(int(c) + i))
}
fmt.Println()
c = 'Z'
for i := 0; i < 26; i++ {
fmt.Printf("%c", byte(int(c) - i))
}