cd /news/developer-tools/ai-ekhiiyn-go-obraantl-d-jetbrains-e… · home topics developer-tools article
[ARTICLE · art-111337] src=dev.to ↗ pub= topic=developer-tools verified=true sentiment=↑ positive

AI เขียน Go โบราณตลอด — JetBrains เลยทำ "กติกาการเขียน Go สมัยใหม่" ให้ agent แล้ว

JetBrains has released go-modern-guidelines, a repository of 57 guidelines covering Go 1.0 through 1.27, designed to help AI coding agents write modern Go code. The project addresses the problem of AI models defaulting to outdated Go idioms due to training data lagging behind new language features. The guidelines are packaged as a plugin/skill for agents like Junie, Claude Code, Codex, and Cursor, and can be installed via skills.sh.

read2 min views2 publishedAug 26, 2026

📅 เขียนเมื่อ: สิงหาคม 2026 | ครอบคลุม Go 1.0–1.27

⚠️ ข้อมูลอัปเดต ณ วันที่เขียน — เวอร์ชัน/ฟีเจอร์อาจเปลี่ยนตามรอบ release ของ Go

ถ้าคุณเคยให้ AI coding agent เขียนโค้ด Go ให้ ลองสังเกตดูว่ามันเขียนออกมาเป็นยังไง ส่วนใหญ่แล้วมันจะเขียนแบบ "รุ่นพ่อ" ออกมา — ใช้ if a > b { return a }

แทนที่จะใช้ max(a, b)

, เขียน loop หา element ทีละตัวแทน slices.Contains

, หรือประกาศตัวแปรชั่วคราวเพื่อเอา pointer แทนที่จะใช้ new(...)

โค้ดแบบนี้รันได้นะ ไม่ผิดด้วย แต่มันไม่ใช่ Go แบบที่เราเขียนกันในปี 2026 แล้ว และนี่คือปัญหาที่ทีม JetBrains มองเห็น แล้วทำของชิ้นหนึ่งออกมาแก้ตรงจุด — ชื่อว่า go-modern-guidelines

สาเหตุหลักมีสองอย่าง และมันซ้อนกันอยู่

อย่างแรก โมเดลภาษาเรียนรู้จากโค้ดบนโลก ซึ่งส่วนใหญ่เขียนขึ้นมาในช่วงหลายปีที่ผ่านมา โค้ด Go เก่า ๆ ที่วนอยู่ใน internet มหาศาลล้วนเป็นสไตล์ "ก่อนจะมีฟีเจอร์ใหม่" ทั้งนั้น โมเดลเลยจับ pattern แบบเก่ามาเป็น default

อย่างที่สอง Go ออกเวอร์ชันใหม่ทุก ๆ หกเดือน และแต่ละรอบก็มีของเล่นชิ้นเล็ก ๆ เข้ามาเรื่อย ๆ — min

/max

เข้ามาใน Go 1.21, for i := range n

ใน Go 1.22, slices.Collect

ใน 1.23, t.Context()

ใน 1.24, errors.AsType

ใน 1.26, และ encoding/json/v2

ใน 1.27 จังหวะมันไวกว่าที่โมเดลจะตามทัน

ผลลัพธ์คือ agent เขียนโค้ดที่ "ถูกแต่เชย" แล้วเราก็ต้องมาแก้ทีหลัง — ซึ่งก็คือสิ่งที่ Go team เองก็เห็นเหมือนกัน ถึงขั้นทำ analyzer ชื่อ modernize

เอาไว้ auto-update โค้ดเก่าให้เป็น idiom ใหม่

แทนที่จะรอให้โมเดลฉลาดขึ้นเอง ทีม JetBrains ทำสิ่งที่ตรงไปตรงมากว่ามาก คือเขียนกติกาให้ agent อ่านแล้วทำตาม

go-modern-guidelines

เป็น repository ที่รวบรวม guideline 57 ข้อ ครอบคลุมตั้งแต่ Go 1.0 ยัน Go 1.27 แต่ละข้อประกอบด้วย "เขียนแบบนี้ ไม่ใช่แบบนี้" พร้อมโค้ดตัวอย่าง before/after ครบชุด แนวคิดง่าย ๆ คือให้ agent มี reference ที่ชัดเจนแทนที่จะเดาเอาเอง

ที่สำคัญคือมันไม่ใช่แค่เอกสารอ่านเล่น — ตัว guideline นี้ถูกแพ็กเป็น plugin/skill ให้ติดตั้งเข้าไปใน agent ได้ตรง ๆ รองรับทั้ง Junie, Claude Code, Codex, Cursor และ agent อื่น ๆ ผ่าน skills.sh พอติดตั้งแล้ว agent จะเรียกใช้ guideline นี้โดยอัตโนมัติตอนเจองานที่เกี่ยวกับ Go

ผมขอหยิบตัวอย่างที่เห็นแล้ว "นี่แหละ ที่ agent มักพลาด" มาให้ดูสักสองสามตัว

min

/ max

แทนการเทียบเอง (Go 1.21)

// แบบเก่า
if a > b {
    return a
}
return b

// แบบใหม่
return max(a, b)

slices.Contains

แทน loop หา (Go 1.21)

// แบบเก่า
found := false
for _, x := range items {
    if x == target {
        found = true
        break
    }
}

// แบบใหม่
found := slices.Contains(items, target)

for i := range n

แทนการนับเอง (Go 1.22)

// แบบเก่า
for i := 0; i < n; i++ {
    doSomething(i)
}

// แบบใหม่
for i := range n {
    doSomething(i)
}

errors.AsType

แทน errors.As

แบบเก่า (Go 1.26)

// แบบเก่า
var e *MyError
if errors.As(err, &e) {
    handle(e)
}

// แบบใหม่ — ได้ตัวแปรตรง ๆ ไม่ต้องประกาศไว้ก่อน
if e, ok := errors.AsType[*MyError](err); ok {
    handle(e)
}

มีอีกเพียบ — clear(m)

ล้าง map, maps.Clone

/maps.Copy

, slices.Sorted

เรียงจาก iterator, sync.OnceValue

สำหรับ memoize, context.AfterFunc

สำหรับ cleanup ตอน cancel ไปจนถึงของใหม่สุดอย่าง generic methods และ encoding/json/v2

ที่เพิ่งเข้าใน Go 1.27

เริ่มใช้งานง่าย ๆ — ถ้าใช้ Claude Code ก็สั่งติดตั้ง marketplace แล้วให้มันโหลด skill นี้เข้าไปได้เลย (คำสั่งติดตั้งครบอยู่ใน README ของ repo) หรือถ้าใช้ agent ตัวอื่นที่รองรับ skills.sh ก็แค่รัน

npx skills add JetBrains/go-modern-guidelines

แค่นี้ agent ของคุณก็จะรู้จัก idiom ใหม่ ๆ ของ Go แทนที่จะยึดติดกับสไตล์เก่า ๆ ที่มันจำมาจากโค้ดบน internet

ปัญหาที่ AI เขียน Go เชย ไม่ใช่เพราะโมเดลโง่ แต่เพราะข้อมูลเทรนเก่ากว่า release ล่าสุดของ Go ทางออกที่ JetBrains เสนอคือการยัด "ความรู้" เข้าไปใน context ของ agent ผ่าน guideline ที่ชัดเจน ซึ่งก็คือสิ่งที่ go-modern-guidelines ทำ — และมันไปทางเดียวกับ modernize

analyzer ของ Go team เป๊ะ

สำหรับใครที่ปล่อยให้ AI เขียน Go บ่อย ๆ ผมว่านี่เป็น skill ที่คุ้มค่าติดไว้ ไม่ต่างจากใส่ style guide ให้ทีม dev เลย

modernize

analyzer (เครื่องมือ auto-update โค้ด Go เก่าให้เป็น idiom ใหม่)

── more in #developer-tools 4 stories · sorted by recency
── more on @jetbrains 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
Live at https://your-agent.zahid.host
Get free account → Pricing
from €0/mo · no card required
LIVE [news/ai-ekhiiyn-go-obraan…] indexed:0 read:2min 2026-08-26 ·