Go 1.22 ถึง 1.26: การเปลี่ยนแปลงที่สำคัญจริงๆ
ทำไมบทความนี้ครอบคลุมสี่ minor versions พร้อมกัน Go releases ออกทุกหกเดือน การอ่านสี่ชุดของ release notes ติดต่อกันไม่ใช่วิธีที่ใครอยากใช้บ่ายบ่าย แต่ถ้าคุณรัน Go ใน production คุณต้องรู้ว่าอะไรเปลี่ยน บทความนี้ครอบคลุม Go 1.22 ถึง Go 1.26 — เวอร์ชันที่ออกระหว่างต้นปี 2024 ถึงต้นปี 2026 นั่นคือสองปีของ language evolution ในที่เดียว Go 1.22: For Loop Changes Everything กุมภาพันธ์ 2024 การเปลี่ยนแปลงที่มีผลกระทบมากที่สุดใน Go 1.22 ไม่ใช่ package ใหม่หรือ compiler optimization แต่เป็น fix เกี่ยวกับวิธีที่ for loops จัดการ variables ก่อน Go 1.22, โค้ดนี้มี bug แบบ subtle: var funcs []func() for i := range 10 { funcs = append(funcs, func() { fmt.Println(i) }) } for _, f := range funcs { f() // prints 9 ten times, not 0-9 } ทุก closure capture variable เดียวกัน i เมื่อคุณเรียก functions, i คือ 9 bug นี้เคยชน dev ทุกคนอย่างน้อยหนึ่งครั้ง ...