0Pricing
Go Academy · บทเรียน

โมดูล Go ด้วย go mod

เริ่มต้นโมดูลด้วย go.mod และ go.sum

โมดูล Go ด้วย go mod เป็นบทเรียน Go Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Go Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Go Academy มีบทเรียนทั้งหมด 4 บทเรียน

โมดูล Go คืออะไร

โมดูลคือกลุ่มของแพ็กเกจ Go ที่มีไฟล์ go.mod อยู่ที่ราก โมดูลเป็นหน่วยสำหรับแจกจ่ายและกำหนดเวอร์ชันของโค้ดใน Go:

// go.mod — created with: go mod init github.com/myuser/myapp
module github.com/myuser/myapp

go 1.21

require (
    github.com/gin-gonic/gin v1.9.1
    golang.org/x/sync v0.5.0
)

go mod init

เริ่มต้นโมดูลใหม่ด้วย go mod init:

# In project directory:
go mod init github.com/myuser/myapp

# This creates go.mod:
# module github.com/myuser/myapp
# go 1.21

# The module path is the canonical import path prefix
# for all packages in this module

go.sum — การตรวจสอบความถูกต้อง

go.sum บันทึกผลรวมตรวจสอบเชิงเข้ารหัสของการพึ่งพาทั้งหมด ห้ามแก้ไขด้วยตนเอง — คำสั่ง go จะจัดการไฟล์นี้ให้:

# go.sum example entries:
github.com/gin-gonic/gin v1.9.1 h1:4idEAncQnU5cB7BeOkPtxjfCSye0AAm1R0RVIqJ+Jmg=
github.com/gin-gonic/gin v1.9.1/go.mod h1:hPrL7YrpYKXt5YId3A/Tnip5kqbEAP+KLuI3SUcPTeU=

# Commit go.sum to version control — it ensures reproducible builds

go get — การเพิ่มการพึ่งพา

ใช้ go get เพื่อเพิ่มหรืออัปเดตการพึ่งพา คำสั่งนี้จะอัปเดตทั้ง go.mod และ go.sum:

# Add latest version
go get github.com/pkg/errors

# Add specific version
go get github.com/pkg/errors@v0.9.1

# Upgrade to latest patch release
go get -u=patch github.com/pkg/errors

# Remove unused dependency from go.mod
go mod tidy

go mod tidy

go mod tidy จะเพิ่มข้อกำหนดที่ขาดหายไปและลบข้อกำหนดที่ไม่ได้ใช้จาก go.mod และ go.sum ควรเรียกใช้หลังแก้ไขการนำเข้า:

# After adding/removing imports:
go mod tidy

# What it does:
# 1. Adds any missing module requirements
# 2. Removes requirements for packages no longer imported
# 3. Updates go.sum with needed checksums
# 4. Best practice: run before committing

การกำหนดเวอร์ชันโมดูลด้วย Semver

โมดูล Go ใช้การกำหนดเวอร์ชันตามความหมาย เวอร์ชันหลักตั้งแต่ 2 ขึ้นไปต้องมีส่วนต่อท้ายในเส้นทาง:

// v1: github.com/pkg/errors
import "github.com/pkg/errors"

// v2+: module path includes major version
import "github.com/foo/bar/v2"
import "github.com/foo/bar/v3"

// go.mod:
// require github.com/foo/bar/v2 v2.3.1

go mod vendor

โหมดผู้จำหน่ายจะคัดลอกการพึ่งพาทั้งหมดไปยังไดเรกทอรีภายในเครื่อง vendor/ เพื่อสร้างโปรแกรมแบบออฟไลน์:

# Copy deps to vendor/
go mod vendor

# Build using vendor/
go build -mod=vendor ./...

# Useful for:
# - Air-gapped environments
# - Reproducible CI builds without network
# - Code review of dependencies

คำสั่ง replace

คำสั่ง replace ใน go.mod ใช้แทนที่โมดูลด้วยเส้นทางภายในเครื่องหรือเวอร์ชันอื่น ซึ่งมีประโยชน์สำหรับการพัฒนาในเครื่อง:

module github.com/myapp

go 1.21

require github.com/mylib v1.0.0

// Use local fork during development:
replace github.com/mylib => ../mylib

// Replace with a specific version:
// replace github.com/mylib v1.0.0 => github.com/myfork v1.0.0

go env GOPATH และ GOMODCACHE

ตัวแปรสภาพแวดล้อมสำคัญสำหรับโมดูล Go:

# Module cache location (default: ~/go/pkg/mod)
go env GOMODCACHE

# Proxy for downloading modules (default: proxy.golang.org)
go env GOPROXY

# Sum database for checksum verification
go env GONOSUMCHECK

# Disable module proxy (use direct)
export GOPROXY=direct

go list และ go mod graph

ตรวจสอบการพึ่งพาของโมดูลด้วยคำสั่งเหล่านี้:

# List all modules in the build
go list -m all

# Show module dependency graph
go mod graph

# Find which module provides a package
go list -m -json all | grep -A5 gin

# Check for available updates
go list -m -u all

ตรวจสอบอย่างรวดเร็ว

go mod tidy ทำหน้าที่อะไร

ทบทวน: โมดูล Go

แนวคิดสำคัญเกี่ยวกับโมดูล:

  • go mod init สร้างโมดูลพร้อมไฟล์ go.mod
  • go.mod แสดงชื่อโมดูล เวอร์ชัน Go และการพึ่งพา
  • go.sum เก็บผลรวมตรวจสอบ — ต้องส่งไฟล์นี้เข้าแหล่งเก็บโค้ด
  • go get เพิ่มหรืออัปเดตการพึ่งพา ส่วน go mod tidy ใช้จัดระเบียบ
  • replace ใช้สำหรับสาขาแยกเพื่อพัฒนาในเครื่อง
  • เวอร์ชันหลัก v2 ขึ้นไปต้องมีส่วนต่อท้ายในเส้นทาง

คำถามที่พบบ่อย

บทเรียน “โมดูล Go ด้วย go mod” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “โมดูล Go ด้วย go mod” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Go Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Go Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “โมดูล Go ด้วย go mod”

เริ่มต้นโมดูลด้วย go.mod และ go.sum คุณปฏิบัติ Go Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Go Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Go Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน

บทเรียน “โมดูล Go ด้วย go mod” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Go Academy นี้ได้ไหม

ได้ บทเรียน Go Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. แพ็กเกจ: การจัดระเบียบโค้ด Go
  2. โมดูล Go ด้วย go mod
  3. การเพิ่มดีเพนเดนซีภายนอก
  4. แพ็กเกจภายในและพื้นที่ทำงาน
← กลับไปที่ Go Academy