
แพ็กเกจ context
context.Context, การยกเลิก, timeout, deadline, ค่า, WithCancel, WithTimeout
1บทบาทหลักของแพ็กเกจ context ใน Go คืออะไร?
บทบาทหลักของแพ็กเกจ context ใน Go คืออะไร?
คำตอบ
แพ็กเกจ context ช่วยให้จัดการ timeout, การยกเลิก และ deadline ได้อย่างสอดคล้องกันตลอดทั้งห่วงโซ่การเรียก ซึ่งป้องกัน goroutine ที่เป็นซอมบี้ซึ่งยังคงทำงานต่อทั้งที่ไม่ต้องการผลลัพธ์แล้ว ควรส่ง context เป็นพารามิเตอร์แรกเสมอ และตรวจสอบ Done() เป็นประจำในการทำงานที่ยาวนานเพื่อเคารพการยกเลิก
2ฟังก์ชันใดสร้าง context ว่างที่ไม่มี deadline หรือการยกเลิก?
ฟังก์ชันใดสร้าง context ว่างที่ไม่มี deadline หรือการยกเลิก?
คำตอบ
context.Background() คืน context ว่างที่ยกเลิกไม่ได้ ไม่มี deadline หรือค่าใด ๆ ใช้เป็นจุดเริ่มต้นในการสร้าง context ที่สืบทอดมา และมักใช้ใน main การกำหนดค่าเริ่มต้น หรือการทดสอบ ห้ามใช้ nil เป็น context เด็ดขาดเพราะจะทำให้เกิด panic เมื่อเข้าถึงเมธอด
3ความแตกต่างระหว่าง context.Background() กับ context.TODO() คืออะไร?
ความแตกต่างระหว่าง context.Background() กับ context.TODO() คืออะไร?
คำตอบ
context.TODO() ทำหน้าที่เป็น placeholder เมื่อยังไม่ชัดเจนหรือยังไม่มี context ที่เหมาะสมระหว่างการพัฒนา ส่วน context.Background() ใช้สำหรับจุดเข้าจริง เช่น main หรือ HTTP handler ทั้งสองทำงานเหมือนกันในเชิงฟังก์ชัน แต่ TODO() ระบุเจตนาชั่วคราวที่ควรถูกแทนที่ภายหลัง
จะสร้าง context ที่สามารถยกเลิกได้ด้วยตนเองอย่างไร?
channel ใดที่ใช้ตรวจจับการยกเลิกของ context ได้?
+17 คำถามสัมภาษณ์
หัวข้อสัมภาษณ์ Go อื่นๆ
พื้นฐาน Go
โครงสร้างข้อมูล Go
อินเทอร์เฟซใน Go
การจัดการข้อผิดพลาด
พื้นฐาน Goroutine
Channels
Go Modules
เซิร์ฟเวอร์ HTTP
ไคลเอนต์ HTTP
การเข้ารหัส JSON
Database/SQL
Testing
รูปแบบ Concurrency
ไพรมิทีฟการซิงโครไนซ์
เฟรมเวิร์กเว็บ Go
การออกแบบ REST API
gRPC
Reflection
การจัดการหน่วยความจำ
การเพิ่มประสิทธิภาพการทำงาน
Generics
Go Design Patterns
Microservices
ความปลอดภัยและการยืนยันตัวตน
Docker & Containerization
Kubernetes Basics
Go ขั้นสูง
การพัฒนา CLI
เชี่ยวชาญ Go สำหรับการสัมภาษณ์ครั้งถัดไป
เข้าถึงคำถามทั้งหมด flashcards แบบทดสอบเทคนิค แบบฝึกหัด code review และตัวจำลองสัมภาษณ์
เริ่มใช้ฟรี