go的基础包 flag log time
-
命令行参数-flag
package main import ( "flag" "fmt" "os" ) func main() { var ( host string port int h bool help bool ) //flag param flag.StringVar(&host, "H", "127.0.0.1", "hostIPAddress") flag.IntVar(&port, "P", 22, "port") flag.BoolVar(&h,"h", false, "帮助信息") flag.BoolVar(&help, "help", false, "帮助信息") //usage信息 flag.Usage = func() { fmt.Println("usage: testflag [-H 127.0.0.1] [-P 22]") flag.PrintDefaults() } //解析 flag.Parse() if h || help { flag.Usage() //return //建议在main中使用 os.Exit(0) } //NFlag returns the number of command-line flags that have been set. fmt.Println(flag.NFlag()) fmt.Printf("%#v\n",flag.Args()) //slice fmt.Println(host, port) } -
日志-log
package main import ( "log" "os" ) func main() { //flag0s 设置一个格式 log.SetFlags(log.Flags() | log.Lshortfile) //prefix log.SetPrefix("main:") log.Println("我是第一条println日志") //log.Fatalln("我是日志") //log.Panicln("我是panic日志") log.Println("我是第2条println日志") logger1 := log.New(os.Stdout, "logger1:", log.Flags() | log.Lshortfile) logger2 := log.New(os.Stdout, "logger2:", log.Flags()) logger1.Println("我是logger1") logger2.Println("我是logger2") } -
时间格式化-time
package main import ( "fmt" "time" ) func main() { //1.时间 now := time.Now() //年 fmt.Println(now.Year()) fmt.Println(now.Month()) fmt.Println(now.Day()) fmt.Println(now.Hour()) fmt.Println(now.Minute()) fmt.Println(now.Second()) //UNix时间戳 fmt.Println(now.Unix()) //纳秒时间戳 fmt.Println(now.UnixNano()) // 2006 4位数字的年 // 01 2位数字的月 // 02 2位数字的天 // 03 12进制的小时 // 15 24进制的小时 // 04 2位数字的分钟 // 05 2位数字的秒 fmt.Println(now.Format("2006-01-02 03:04:05")) fmt.Println(now.Format("2006-01-02 15:04:05")) //生成时间 year, month, day := 1990, time.February, 12 timeFom := time.Date(year, month, day, 0, 0,0, 0, time.UTC) fmt.Println(timeFom.Format("2006-01-02 15:04:05")) //UNixtime startTime := time.Unix(0, 0) fmt.Println(startTime.Format("2006-01-02 15:04:05")) //字符串 cTime, err := time.Parse("2006-01-02 15:04:05", "2022-01-25 13:54:03") fmt.Println(cTime.Format("2006-01-02"), err) cTime, err = time.Parse("2006/01/02", "2022/01/24") fmt.Println(cTime.Format("2006/01/02"), err) //时间差, now -time durat := time.Since(cTime) fmt.Printf("%#v, %T\n", durat, durat) // time - now durat02 := time.Until(cTime) fmt.Printf("%#v, %T\n", durat02, durat02) //parse字符串的时间区间 durat03, err := time.ParseDuration("1h1m1s") fmt.Println(durat, err) //将相差时间区间转换成hours, min, seconds fmt.Println(durat.Hours(), durat03.Minutes(), durat03.Seconds()) //当前时间距离过去xx时间多少小时 dayInterval, err := time.ParseDuration("24h") //2022-01-25 14:27:00.2045069 +0800 CST m=+0.007000101 2022-01-26 14:27:00.2045069 +0800 CST m=+86400.007000101 fmt.Println(now, now.Add(dayInterval)) //判断一个时间在之前还是之后 yesterday := now.Add(dayInterval) //过去的时间 fmt.Println(yesterday.Before(now)) fmt.Println(yesterday.After(now)) fmt.Println(yesterday.Sub(now)) //时间差 fmt.Println(time.Now()) time.Sleep(time.Second * 3) //延迟3s fmt.Println(time.Now()) }

浙公网安备 33010602011771号