தொகுதி பாடங்கள் (4/5)
`நேரம்` தொகுப்பு
time தொகுப்பு மூன்று வேறுபட்ட கருத்துகளை மாதிரியாகக் கொண்டுள்ளது: உடனடி (time.Time), காலங்கள் (time.Duration) மற்றும் ** காலமுறைக் கருவிகள்** (டைமர், டிக்கர்). அவற்றை வேறுபடுத்துவது மிக முக்கியமானது: ஒரு உடனடி என்பது காலவரிசையில் ஒரு புள்ளி, ஒரு கால இடைவெளி ஒரு இடைவெளி.
time.Time — உடனடி
now := time.Now() // current instant in the local timezone
utc := now.UTC() // same instant in UTC
later := now.Add(2 * time.Hour) // add a duration
diff := later.Sub(now) // 2h0m0s (it's a Duration)
fmt.Println(now.Year(), now.Month(), now.Day())
fmt.Println(now.Weekday())time.Time என்பது மாறாதது: அனைத்து முறைகளும் Add, Truncate, Round ஒரு புதிய Time ஐ வழங்கும்.
உடனடி நேரத்தை ஒப்பிடுவதற்கு Before, After, Equal ஐப் பயன்படுத்தவும். இன்ஸ்டன்ட்கள் வெவ்வேறு நேர மண்டலங்கள்/மோனோடோனிக் கடிகாரங்களைக் கொண்டிருக்கலாம் என்றால் == ஐப் பயன்படுத்த வேண்டாம்.
time.Duration — இடைவெளிகள்
d := 250 * time.Millisecond
fmt.Println(d) // 250ms
fmt.Println(d.Seconds()) // 0.25 (float64)
const timeout = 5 * time.Secondtime.Duration என்பது int64 இன் மாற்றுப்பெயர், இது நானோ விநாடிகள். மாறிலிகள் time.Nanosecond, time.Microsecond, time.Millisecond, time.Second, time.Minute, time.Hour 2_TO வகை.
பாகுபடுத்துதல் மற்றும் வடிவமைத்தல்: குறிப்பு தளவமைப்பு
Go YYYY-MM-DD போன்ற சரங்களைப் பயன்படுத்தாது. இது நியமன குறிப்பு உடனடியைப் பயன்படுத்துகிறது:
Mon Jan 2 15:04:05 MST 2006அதாவது 01/02 03:04:05PM '06 -0700. இந்த அமைப்பை மனப்பாடம் செய்வதன் மூலம் (நினைவூட்டல்: 1-2-3-4-5-6-7) நீங்கள் எந்த தேதியையும் வடிவமைக்கலாம்:
const layout = "2006-01-02 15:04:05"
s := time.Now().Format(layout) // "2026-05-16 14:30:00"
t, err := time.Parse(layout, "2026-05-16 14:30:00")stdlib ஆயத்த தளவமைப்புகளை வழங்குகிறது: time.RFC3339 ("2006-01-02T15:04:05Z07:00"), time.RFC1123, time.Kitchen ("3:04PM").
fmt.Println(time.Now().Format(time.RFC3339))நேரத்தை அளவிடுதல்
start := time.Now()
work()
elapsed := time.Since(start) // = time.Now().Sub(start)
fmt.Println("ci ha messo", elapsed)time.Since ** மோனோடோனிக் கடிகாரத்தைப் பயன்படுத்துகிறது செயல்திறன் அளவீடுகளுக்கு நீங்கள் விரும்புவது இதுதான்.
டைமர் மற்றும் டிக்கர்
time.After(d)dக்குப் பிறகு ஒருமுறை மட்டுமே பெறும்chan time.Timeஐ வழங்குகிறது.selectஇல் பயனுள்ளது:
select {
case res := <-ch:
fmt.Println("ok", res)
case <-time.After(2 * time.Second):
return errors.New("timeout")
}time.NewTimer(d)என்பது நிறுத்தக்கூடிய மாறுபாடு (t.Stop()).time.NewTicker(d)ஒவ்வொருdக்கும் மீண்டும் மீண்டும் அனுப்புகிறது. Goroutine கசிவுகளைத் தவிர்க்கdefer ticker.Stop()ஐ நினைவில் கொள்ளவும்.
ticker := time.NewTicker(time.Second)
defer ticker.Stop()
for range ticker.C {
fmt.Println("tick")
}பயிற்சிகள்
நேரத்திற்கு ஏற்ப தற்போதைய உடனடி வடிவத்தை அச்சிடவும்.RFC3339.
3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்
எவ்வளவு நேரம் ஆகும் என்பதை அளவிடவும். 10 நிமிட தூக்கம் நேரத்தைப் பயன்படுத்தி எடுக்கிறது. அதிலிருந்து முடிவை அச்சிடவும்.
3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்
மாறிலி `நேரம்.இரண்டாம்` என்பது என்ன?
d := time.Second
// d ha tipo ???