𝗚𝗼 𝗖𝗼𝗻𝘁𝗲𝘅𝘁 𝗣𝗮𝗰𝗸𝗮𝗴𝗲

Sebagian besar pengembang Go menggunakan context.Context tanpa memahaminya. Anda dapat melihatnya di handler HTTP, panggilan database, dan metode SDK. Banyak pemula menggunakan context.Background() di mana-mana.

Kesalahan ini menyebabkan masalah. Fungsi Lambda mungkin menggantung melampaui batas waktunya (timeout). Kueri database mungkin terus berjalan setelah pengguna terputus.

Context memungkinkan Anda untuk mengirim sinyal pembatalan dan tenggat waktu (deadline) melalui kode Anda. Ini membantu Anda menjawab tiga pertanyaan:

• Apakah operasi ini harus terus berjalan? • Kapan operasi ini harus selesai? • Data permintaan apa yang mengalir bersama panggilan ini?

Interface Context memiliki empat metode:

Context bekerja seperti sebuah pohon. Anda memulai dengan context induk (parent) dan membuat anak-anaknya (children).

Context Akar (Root Contexts):

Context Anak (Child Contexts):

Aturan Penting: Selalu panggil fungsi cancel. Gunakan defer cancel() segera setelah membuat context anak. Jika Anda melewatkan hal ini, Anda akan menyebabkan kebocoran memori (memory leaks).

Praktik Terbaik:

Ketika context induk dibatalkan, semua anaknya akan dibatalkan secara otomatis. Hal ini memudahkan untuk menghentikan seluruh rangkaian operasi di seluruh sistem Anda.

Sumber: https://dev.to/ferztyle/go-context-package-37nk