การใช้ defer ใน Golang
Feb 22, 2025
ใน Golang นั้น "defer" ใช้ในการเลื่อนการทำงานของฟังก์ชั่นออกไปจนกว่าฟังก์ชั่นที่ครอบมันจะสิ้นสุด
ตัวอย่างแบบ basic
ผลลัพธ์ที่ได้คือ
จะเห็นได้ว่าแม้ defer จะอยู่ตรงกลาง แต่ก็ทำงานหลังสุด
defer กับการ Evaluated ค่า
defer นั้นจะ evaluate ค่า argument ทันที แต่จะ execute ฟังก์ชั่นที่ defer หลังจาก return จากฟังก์ชั่นที่ครอบอยู่
ตัวอย่างเช่น
ผลลัพธ์ที่ได้จะเป็น
จะสังเกตได้ว่า ถึงแม้ defer จะ print ทีหลัง แต่ค่าของ x ที่ถูกส่งเข้าไปใน function println นั้นถูก evaluated ก่อนที่จะปรับค่า x เป็น 2
การใข้ defer หลายตัว
ตัวอย่างเช่น
จะได้ผลลัพธ์คือ
นั่นก็เพราะ defer ทำงานแบบ LIFO หรือ Last in, First Out นั่นเอง
กล่าวคือคำสั่งที่ถูก defer ทีหลังจะถูก execute ก่อน