格式化時(shí)間樣式,利用 goroutine 實(shí)現(xiàn)獲取和格式化當(dāng)前時(shí)間,并且通過 channel 返回到主函數(shù)并打印出來。
在 go 語言中,時(shí)間格式化有一個(gè)標(biāo)準(zhǔn)時(shí)間必須記住 2006-01-02 15:04:05 -0700,為什么是這個(gè)時(shí)間呢?我們換個(gè)樣式來看一下 “01-02 03:04:05 pm 2006 -0700”,這就是 1234567??!當(dāng)然,-0700說的是時(shí)區(qū)。
格式化的寫法如下
tn := time.Now().Format("2006年01月02日 15點(diǎn)04分05秒.0000000 時(shí)區(qū)-0700")
為了實(shí)現(xiàn) goroutine ,我們準(zhǔn)備一個(gè)函數(shù),用通道作為參數(shù)。
func timenow(ch chan string) {
tn := time.Now().Format("2006年01月02日 15點(diǎn)04分05秒.0000000 時(shí)區(qū)-0700")
ch <- tn
}
在主函數(shù)中,建立一個(gè)通道,并且寫一個(gè) 10 次的 for 循環(huán)來執(zhí)行 timenow 函數(shù)。為了讓時(shí)間有一個(gè)間隔,每次循環(huán),我們間隔 0.5 秒。
ch := make(chan string)
for i := 0; i < 10; i++{
go timenow(ch)
fmt.Println(<-ch)
time.Sleep(500*time.Millisecond)
}
看完整代碼
package main
import (
"time"
"fmt"
)
func timenow(ch chan string) {
tn := time.Now().Format("2006年01月02日 15點(diǎn)04分05秒.0000000 時(shí)區(qū)-0700")
ch <- tn
}
func main() {
ch := make(chan string)
for i := 0; i < 10; i++{
go timenow(ch)
fmt.Println(<-ch)
time.Sleep(500*time.Millisecond)
}
}
運(yùn)行結(jié)果
2017年09月02日 11點(diǎn)49分51秒.3027569 時(shí)區(qū)+0800
2017年09月02日 11點(diǎn)49分51秒.8839153 時(shí)區(qū)+0800
2017年09月02日 11點(diǎn)49分52秒.3845286 時(shí)區(qū)+0800
2017年09月02日 11點(diǎn)49分52秒.8851379 時(shí)區(qū)+0800
2017年09月02日 11點(diǎn)49分53秒.3851748 時(shí)區(qū)+0800
2017年09月02日 11點(diǎn)49分53秒.8855677 時(shí)區(qū)+0800
2017年09月02日 11點(diǎn)49分54秒.3858873 時(shí)區(qū)+0800
2017年09月02日 11點(diǎn)49分54秒.8861271 時(shí)區(qū)+0800
2017年09月02日 11點(diǎn)49分55秒.3868477 時(shí)區(qū)+0800
2017年09月02日 11點(diǎn)49分55秒.8874858 時(shí)區(qū)+0800