
การจัดการข้อผิดพลาด
Error type, error wrapping, errors.Is, errors.As, custom errors, panic/recover
1อินเทอร์เฟซใดที่ใช้แทนข้อผิดพลาดใน Go?
อินเทอร์เฟซใดที่ใช้แทนข้อผิดพลาดใน Go?
คำตอบ
อินเทอร์เฟซ error เป็นอินเทอร์เฟซที่กำหนดไว้ล่วงหน้าใน Go สำหรับแทนสภาวะข้อผิดพลาด มันมีเมธอด Error() เพียงหนึ่งเดียวที่คืนค่าสตริงที่อธิบายข้อผิดพลาด ค่า nil แทนการไม่มีข้อผิดพลาด นี่คืออินเทอร์เฟซตามแบบแผนที่แพ็กเกจทั้งหมดของไลบรารีมาตรฐานและนักพัฒนา Go ใช้เพื่อส่งสัญญาณและส่งต่อข้อผิดพลาด
2จะสร้างข้อผิดพลาดอย่างง่ายพร้อมข้อความแบบคงที่ใน Go ได้อย่างไร?
จะสร้างข้อผิดพลาดอย่างง่ายพร้อมข้อความแบบคงที่ใน Go ได้อย่างไร?
คำตอบ
ฟังก์ชัน errors.New() จากแพ็กเกจ errors สร้างข้อผิดพลาดอย่างง่ายพร้อมข้อความแบบคงที่ มันคืนค่าชนิด error ที่ implement อินเทอร์เฟซ error ด้วยข้อความที่ให้มา แนวทางนี้แนะนำสำหรับการสร้าง sentinel error (ข้อผิดพลาดที่กำหนดไว้ล่วงหน้าเช่น os.ErrNotExist) หรือข้อผิดพลาดอย่างง่ายที่ไม่มีบริบทแบบไดนามิก สำหรับข้อความแบบไดนามิก ให้ใช้ fmt.Errorf()
3ฟังก์ชันใดที่อนุญาตให้สร้างข้อผิดพลาดพร้อมข้อความที่จัดรูปแบบแบบไดนามิก?
ฟังก์ชันใดที่อนุญาตให้สร้างข้อผิดพลาดพร้อมข้อความที่จัดรูปแบบแบบไดนามิก?
คำตอบ
ฟังก์ชัน fmt.Errorf() สร้างข้อผิดพลาดพร้อมข้อความที่จัดรูปแบบแบบไดนามิกโดยใช้ format verb (เช่น %s, %d, %v) นอกจากนี้ยังรองรับ verb พิเศษ %w เพื่อห่อหุ้มข้อผิดพลาดที่มีอยู่ ซึ่งเป็นการรักษาห่วงโซ่ข้อผิดพลาดไว้สำหรับการตรวจสอบในภายหลัง นี่คือวิธีที่แนะนำสำหรับการเพิ่มบริบทให้กับข้อผิดพลาดในขณะที่ยังคงข้อผิดพลาดเดิมไว้
format verb ใดที่อนุญาตให้ห่อหุ้มข้อผิดพลาดด้วย fmt.Errorf()?
ฟังก์ชันใดที่ตรวจสอบว่าข้อผิดพลาดที่ถูกห่อหุ้มตรงกับข้อผิดพลาดที่ระบุหรือไม่?
+17 คำถามสัมภาษณ์
หัวข้อสัมภาษณ์ Go อื่นๆ
พื้นฐาน Go
โครงสร้างข้อมูล Go
อินเทอร์เฟซใน Go
พื้นฐาน Goroutine
Channels
Go Modules
เซิร์ฟเวอร์ HTTP
ไคลเอนต์ HTTP
การเข้ารหัส JSON
Database/SQL
แพ็กเกจ context
Testing
รูปแบบ Concurrency
ไพรมิทีฟการซิงโครไนซ์
เฟรมเวิร์กเว็บ Go
การออกแบบ REST API
gRPC
Reflection
การจัดการหน่วยความจำ
การเพิ่มประสิทธิภาพการทำงาน
Generics
Go Design Patterns
Microservices
ความปลอดภัยและการยืนยันตัวตน
Docker & Containerization
Kubernetes Basics
Go ขั้นสูง
การพัฒนา CLI
เชี่ยวชาญ Go สำหรับการสัมภาษณ์ครั้งถัดไป
เข้าถึงคำถามทั้งหมด flashcards แบบทดสอบเทคนิค แบบฝึกหัด code review และตัวจำลองสัมภาษณ์
เริ่มใช้ฟรี