Defer ของ Go และ Drop ของ Rust
(dev.to)- สำหรับการปล่อยทรัพยากรโดยอัตโนมัติ ใน Go สามารถใช้
deferได้
→ แต่หากมีการจัดสรรทรัพยากรภายในลูป แม้จะไม่ใช่ว่าไม่มีวิธี แต่จะซับซ้อนขึ้น
→ มีโอกาสพลาดได้เสมอ
- ใน Rust สามารถปล่อยทรัพยากรโดยอัตโนมัติได้ด้วยการ implement
Droptrait ให้กับทรัพยากร
→ แม้ในกรณีอย่างลูปก็ไม่มีปัญหาแบบเดียวกับ defer และไม่จำเป็นต้องเรียกการปล่อยทรัพยากรผ่าน defer
1 ความคิดเห็น
ใน Go ก็มีข้อเสนอเกี่ยวกับ try-resource อยู่เหมือนกัน แต่ดูเหมือนจะไม่ได้ให้ความสำคัญกันสักเท่าไร:
https://github.com/golang/go/issues/29120
พอเห็นอะไรแบบนี้ ก็รู้สึกได้ว่า การไม่ซ่อนการปล่อยทรัพยากรไว้ใต้โมดูลอื่น ก็น่าจะเป็นส่วนหนึ่งของปรัชญาใน Go เหมือนกันครับ
https://stackoverflow.com/questions/59044658/…