Quantcast
Channel: cc :: somkiat
Viewing all articles
Browse latest Browse all 1997

สิ่งที่น่าสนใจใน Go 1.22.0

$
0
0

มาดูความสามารถที่น่าสนใจใน 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

[gist id="f754177e0687eb79e56a4c7fca9e1087" file="demo.go"]

ผลการ run เป็นดังนี้

[gist id="f754177e0687eb79e56a4c7fca9e1087" file="1.txt"]

ต่อมาคือ loop variable ใน Go 1.22
จากเดิมเป็น preview feature ใน Go 1.21
จะทำการสร้าง variable ขึ้นมาใหม่ ในแต่ละรอบของ loop
ที่ทำงานกับ go routine
เพื่อแก้ไขปัญหาการทำงานแบบ concurrent และ การ share ข้อมูลกันนั่นเอง
ตัวอย่าง code

[gist id="f754177e0687eb79e56a4c7fca9e1087" file="demo2.go"]

มาดูผลการทำงาน
จะพบว่าค่าของตัวแปร i นั้น จะเป็นคนละตัวกัน ไม่ได้ใช้งานร่วมกัน
และใน go vet ก็สนับสนุน loop variable ด้วยเช่นกัน

[gist id="f754177e0687eb79e56a4c7fca9e1087" file="2.txt"]

เรื่องที่ 2 คือ math/rand/v2 package ทำการเพิ่ม global function N() เข้ามา

[gist id="f754177e0687eb79e56a4c7fca9e1087" file="ramdom.go"]

เรื่องที่ 3 การเปลี่ยนแปลงของ net/http package

สามารถทำการใส่ HTTP methods เข้าในไปการกำหนด router ได้เลย
ไม่ต้องมาเขียน if กันอีกแล้ว
ยกตัวอย่างการเขียนแบบเดิม

[gist id="f754177e0687eb79e56a4c7fca9e1087" file="server1.go"]

มาดู code ในGo 1.22 ที่เปลี่ยนแปลงกัน

[gist id="f754177e0687eb79e56a4c7fca9e1087" file="server2.go"]

ทำการ upgrade และใช้งานกันดูครับ
ขอให้สนุกกับการ coding

Reference Websites


Viewing all articles
Browse latest Browse all 1997

Trending Articles