Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Melaksanakan Fungsi Go Setiap Hari Pada Tengah Hari Semasa Mengendalikan Input Pengguna Serentak?
Melaksanakan Kod pada Tengah Hari di Golang
Dalam senario ini, kami menyasarkan untuk menjalankan fungsi tertentu pada waktu tengah hari setiap hari sambil mengendalikan input pengguna semasa baki pelaksanaan program. Beberapa pendekatan boleh mencapai matlamat ini dengan berkesan:
Pemasa Selang
Fungsi Pemasa dalam Go membolehkan kami melaksanakan tugas pada selang masa yang telah ditetapkan. Untuk menjadualkan fungsi pada tengah hari setiap hari, kita boleh menggunakan:
Mengira Selang
Untuk menentukan selang antara waktu semasa dan tengah hari berikutnya, kita mula-mula mengira masa yang tinggal sehingga tengah hari pertama selepas program bermula. Kami kemudian menggunakan selang 24 jam untuk tugas tengah hari berikutnya.
Kod Contoh menggunakan masa.Tidur:
package main import "fmt" import "time" func noonTask() { fmt.Println(time.Now()) fmt.Println("do some job.") } func initNoon() { t := time.Now() n := time.Date(t.Year(), t.Month(), t.Day(), 12, 0, 0, 0, t.Location()) d := n.Sub(t) if d < 0 { n = n.Add(24 * time.Hour) d = n.Sub(t) } for { time.Sleep(d) d = 24 * time.Hour noonTask() } } func main() { initNoon() }
Menggunakan pemasa.AfterFunc:
package main import ( "fmt" "sync" "time" ) func noonTask() { fmt.Println(time.Now()) fmt.Println("do some job.") timer.AfterFunc(duration(), noonTask) } func main() { timer.AfterFunc(duration(), noonTask) wg.Add(1) // do normal task here wg.Wait() } func duration() time.Duration { t := time.Now() n := time.Date(t.Year(), t.Month(), t.Day(), 12, 0, 0, 0, t.Location()) if t.After(n) { n = n.Add(24 * time.Hour) } d := n.Sub(t) return d } var wg sync.WaitGroup
Maklumat Tambahan
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Fungsi Go Setiap Hari Pada Tengah Hari Semasa Mengendalikan Input Pengguna Serentak?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!