โมดูล 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 modulego.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 buildsgo 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 tidygo 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.1go 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.0go 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=directgo 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.modgo.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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- แพ็กเกจ: การจัดระเบียบโค้ด Go
- โมดูล Go ด้วย go mod
- การเพิ่มดีเพนเดนซีภายนอก
- แพ็กเกจภายในและพื้นที่ทำงาน