ใน Go 1.20 นั้นมีการเปลี่ยนแปลงตัวภาษานิดหน่อย
หนึ่งในนั้นคือ การ convert ข้อมูลจาก slice มาเป็น array
ซึ่งเป็นความรู้ใหม่เล็ก ๆ ที่น่าสนใจ

ใน version 1.19 นั้น code ชุดนี้จะ compile ไม่ผ่าน

แต่ใน version 1.20 นั้นจะ run ผ่าน

แต่ปัญหาหรือ panic จะเกิดขึ้นเมื่อกำหนดขนาดของ array ใหญ่กว่า slice ต้นทาง

ส่วนการแก้ไขทั้ง slice และ array จะไม่ส่งผลกระทบแก่กัน
เนื่องจากทำการ copy value ไปเท่านั้น
แต่ถ้าต้องการให้เปลี่ยนข้อมูลที่ slice หรือ array แล้ว
ต้องการให้ทั้งสองเปลี่ยนไปด้วย
จะต้องทำการ convert ด้วย array pointer ดังนี้

การเปลี่ยนแปลงเรี่องนี้มาพร้อมกับ unsafe package นั่นเอง

Reference Websites

Tags:,