Rumah >masalah biasa >Apa itu ctx dalam golang
ctx dalam Golang ialah singkatan Konteks, yang merupakan jenis dalam pustaka standard dan digunakan untuk memindahkan metadata seperti meminta nilai khusus skop, isyarat pembatalan dan tarikh akhir antara "goroutine".
Sistem pengendalian untuk tutorial ini: Sistem Windows 10, versi Go1.20.1, komputer Dell G3.
Di Golang, ctx ialah singkatan Konteks, yang merupakan jenis dalam perpustakaan standard.
Jenis konteks digunakan untuk menghantar metadata seperti meminta nilai khusus skop, isyarat pembatalan dan tarikh akhir antara gorouti. Apabila membuat permintaan, Konteks akar boleh dibuat dan dihantar ke rantai panggilan sepanjang aplikasi. Apabila permintaan disebarkan, Konteks ini boleh disalin oleh gorout lain dan digunakan untuk komunikasi asas. Fungsi utama
ctx ialah:
Mengirim metadata: Dalam rantaian panggilan rangkaian permintaan HTTP, beberapa maklumat metadata (seperti token kebenaran pengguna) perlu diluluskan dan digunakan sepanjang jalan , ctx ialah kaedah pilihan untuk melaksanakan senario ini.
Kawal masa tamat dan pembatalan: Dalam rangkaian panggilan bersarang fungsi berbilang peringkat, ralat selalunya perlu menembusi setiap lapisan rantai panggilan Dalam sesetengah kes, Goroutine dan ctx juga perlu dibatalkan pada masa yang sama. Ini adalah cara penting untuk menyelesaikan masalah seperti ini.
Berikut ialah kod sampel ringkas yang menggambarkan cara menggunakan ctx untuk mengawal pembatalan dan tamat masa goroutine.
func main() { ctx, cancel := context.WithCancel(context.Background()) defer cancel() // 常用结合 defer 安排执行 go doSomething(ctx) time.Sleep(10 * time.Second) } func doSomething(ctx context.Context) { select { case <-time.After(time.Hour): fmt.Println("do something") case <-ctx.Done(): fmt.Println("canceled by user:", ctx.Err()) } }
Dalam kod sampel, Konteks dicipta menggunakan `context.WithCancel` dan membawa fungsi pembatalan (`cancel()`) dan kemudian menghantarnya ke fungsi `doSomething`. Dalam `doSomething`, 2 daripada saluran dipantau melalui `select` Apabila 10 saat berlalu, goroutine utama melaksanakan fungsi `cancel`, dengan itu menghantar isyarat Selesai kepada `ctx`, yang menyebabkan goroutine `doSomething` Receive. isyarat ini dan
Atas ialah kandungan terperinci Apa itu ctx dalam golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!