ข้ามไปเนื้อหาหลัก

Go 1.26: ฟังก์ชันใหม่ new() รองรับ Expression แล้ว

Go 1.26 ปล่อยอัปเดต 10 กุมภาพันธ์ 2026 ให้ฟังก์ชัน built-in อย่าง new() รับ expression ได้โดยตรง ช่วยให้นักพัฒนาลบ helper functions เดิมทิ้งได้

เรียบเรียงโดย AI
Inewgen
สด15 Oct 2026ที่มา: Dev.to3 นาทีอ่าน (0 ครั้ง)
แชร์
Go 1.26: ฟังก์ชันใหม่ new() รองรับ Expression แล้ว

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง

ขนาดตัวอักษร
  • Go 1.26 อัปเดตเมื่อ 10 กุมภาพันธ์ 2026 ให้ new() รับ expression ได้
  • ช่วยลดการใช้งานฟังก์ชันช่วยอย่าง ptr[T], StringPtr, หรือ IntPtr
  • เครื่องมือ go fix ตัวใหม่ช่วยแปลงโค้ดเดิมอัตโนมัติได้อย่างรวดเร็ว
  • มีข้อยกเว้นบางกรณีที่ยังต้องพึ่งพา helper แบบเดิม เช่น การใช้ฟังก์ชันค่าหรือรองรับ Go เวอร์ชันเก่า

การอัปเดตภาษาโปรแกรม Go ครั้งใหญ่ในเวอร์ชัน Go 1.26 ซึ่งปล่อยออกมาเมื่อวันที่ 10 กุมภาพันธ์ 2026 ได้นำความเปลี่ยนแปลงสำคัญมาสู่ฟังก์ชันพื้นฐานอย่าง new() โดยจากเดิมที่ต้องรับเฉพาะชนิดข้อมูล (type) ตอนนี้ได้ถูกพัฒนาให้สามารถรับ expression ได้โดยตรงแล้ว เช่น คำสั่งอย่าง new(42) หรือ new(time.Now()) สามารถคอมพิวเตอร์ผ่านได้ทันที

ความเปลี่ยนแปลงนี้ส่งผลโดยตรงต่อโปรเจกต์จำนวนมากที่มีการสร้างไฟล์ helper เช่น ptr[T], StringPtr, IntPtr หรือไฟล์ utils/pointer.go ที่มักถูกเรียกใช้งานในทุกแพ็กเกจ นักพัฒนาสามารถลบฟังก์ชันเหล่านี้ส่วนใหญ่ออกได้ทันที โดยอาศัยเครื่องมือ go fix เข้ามาช่วยจัดการงานส่วนใหญ่ให้โดยอัตโนมัติหลังจากปรับปรุงเวอร์ชันใน go.mod เป็น Go 1.26 ขึ้นไป

golang code editor screen close up

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง

ในภาษา Go ไม่มีฟังก์ชัน Optional[T] แบบภาษาอื่น เมื่อฟิลด์ข้อมูลสามารถเว้นว่างได้ และค่าว่างนั้นมีความหมายต่างจากค่า zero value แนวทางปฏิบัติทั่วไปคือการใช้พอยเตอร์ (pointer) ซึ่งบันทึกประจำรุ่นของ Go 1.26 ได้ระบุไว้ชัดเจนว่าฟีเจอร์นี้มีประโยชน์อย่างมากเมื่อต้องทำงานร่วมกับแพ็กเกจการ serialization เช่น encoding/json หรือ protocol buffers ที่ใช้พอยเตอร์เพื่อแทนค่าทางเลือกที่อาจขาดหายไป

ไม่อยากพลาดข่าวใหม่?

สมัครรับสรุปข่าวสารใหม่ทางอีเมล ไม่บ่อยจนรำคาญ

โฆษณา

1.26เวอร์ชัน Go ที่รองรับฟังก์ชัน new(expr)
2จำนวนครั้งที่แนะนำให้รัน go fix เพื่อความสมบูรณ์

สำหรับการอัปเดตโค้ดเบส นักพัฒนาไม่ต้องตามแก้ทุกจุดด้วยมือ เนื่องจาก Go 1.26 ได้ยกเครื่องคำสั่ง go fix ให้ฉลาดขึ้นผ่านเฟรมเวิร์กวิเคราะห์โค้ดตัวเดียวกับ go vet โดยมีตัววิเคราะห์ชื่อ newexpr ทำหน้าที่จัดการแพทเทิร์นนี้โดยเฉพาะ บล็อกของ Alan Donovan บนเว็บไซต์ Go ได้แนะนำคำสั่งสำหรับพรีวิวและรันการแก้ไข เช่น go fix -diff -newexpr ./... ก่อนที่จะรันคำสั่งจริงซ้ำอีกครั้งจนกว่าจะเสร็จสิ้นกระบวนการ

การเปลี่ยนแปลงนี้สะท้อนถึงความพยายามของทีมพัฒนา Go ในการลดโค้ดส่วนเกิน (boilerplate code) ที่นักพัฒนาต้องเขียนซ้ำๆ มานานหลายปี แม้จะเป็นการเปลี่ยนแปลงเล็กน้อยในแง่ไวยากรณ์ แต่ช่วยลดภาระในการดูแลรักษาไลบรารีขนาดเล็กได้อย่างมหาศาล อย่างไรก็ตาม สำหรับผู้พัฒนาไลบรารีที่ยังต้องซัพพอร์ตผู้ใช้งาน Go เวอร์ชันเก่า การตัดสินใจอัปเกรดขั้นต่ำไปที่ Go 1.26 ยังคงต้องชั่งน้ำหนักระหว่างความสะดวกใหม่และความเข้ากันได้กับระบบเดิม

อย่างไรก็ตาม go fix จะไม่ทำการแก้ไขในกรณีที่อาจส่งผลกระทบต่อชนิดข้อมูล เช่น ค่าคงที่แบบ untyped constants ที่มีชนิดข้อมูลจำเพาะ หรือกรณีที่แพ็กเกจมีการประกาศตัวแปรชื่อ new ซ้ำซ้อน นอกจากนี้ยังมีบางสถานการณ์ที่ helper แบบเดิมยังคงมีความจำเป็น เช่น เมื่อต้องการส่งฟังก์ชันเป็นค่า หรือเมื่อไลบรารีจำเป็นต้องรองรับ Go เวอร์ชันก่อนหน้า 1.26 รวมถึงฝั่งการอ่านค่า (read side) ที่ยังคงต้องใช้ฟังก์ชันอย่าง ptr.Deref สำหรับดึงค่าพร้อมค่าเริ่มต้น

ที่มา: Dev.to

ความคิดเห็น

แสดงความคิดเห็น
0/2000

พบข้อมูลผิดพลาดในบทความนี้? แจ้งปัญหาบทความนี้