มาดูความสามารถที่น่าสนใจใน Go 1.22 กัน ว่ามีอะไรบ้าง
- For loop
- math/rand/v2 package ใหม่ สำหรับการ random
- go/version package ใหม่ สำหรับการตรวจสอบ version
- การเปลี่ยนแปลงของ net/http package
มาดูกันเลย
เรื่องที่ 1 การเปลี่ยนแปลงของ For loop
เปลี่ยนเรื่องเดียวของ Go 1.22 กระทบต่อโครงสร้างของภาษา
เพิ่ม range-over-function iterators เข้ามา
ทำให้วน loop ผ่าน range เหมือนภาษา Python ได้
ตัวอย่าง code
ผลการ run เป็นดังนี้
[gist id="f754177e0687eb79e56a4c7fca9e1087" file="1.txt"]ต่อมาคือ loop variable ใน Go 1.22
จากเดิมเป็น preview feature ใน Go 1.21
จะทำการสร้าง variable ขึ้นมาใหม่ ในแต่ละรอบของ loop
ที่ทำงานกับ go routine
เพื่อแก้ไขปัญหาการทำงานแบบ concurrent และ การ share ข้อมูลกันนั่นเอง
ตัวอย่าง code
มาดูผลการทำงาน
จะพบว่าค่าของตัวแปร i นั้น จะเป็นคนละตัวกัน ไม่ได้ใช้งานร่วมกัน
และใน go vet ก็สนับสนุน loop variable ด้วยเช่นกัน
เรื่องที่ 2 คือ math/rand/v2 package ทำการเพิ่ม global function N() เข้ามา
[gist id="f754177e0687eb79e56a4c7fca9e1087" file="ramdom.go"]เรื่องที่ 3 การเปลี่ยนแปลงของ net/http package
สามารถทำการใส่ HTTP methods เข้าในไปการกำหนด router ได้เลย
ไม่ต้องมาเขียน if กันอีกแล้ว
ยกตัวอย่างการเขียนแบบเดิม
มาดู code ในGo 1.22 ที่เปลี่ยนแปลงกัน
[gist id="f754177e0687eb79e56a4c7fca9e1087" file="server2.go"]ทำการ upgrade และใช้งานกันดูครับ
ขอให้สนุกกับการ coding
Reference Websites