การเพิ่มดีเพนเดนซีภายนอก
go get การกำหนดเวอร์ชัน และแคชของโมดูล
การเพิ่มดีเพนเดนซีภายนอก เป็นบทเรียน Go Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Go Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Go Academy มีบทเรียนทั้งหมด 4 บทเรียน
การค้นหาแพ็กเกจ
แหล่งข้อมูลหลักสำหรับค้นหาแพ็กเกจ Go คือ pkg.go.dev ใช้ค้นหาแพ็กเกจ อ่านเอกสาร และดูตัวอย่างการใช้งาน:
# Search and explore at https://pkg.go.dev
# Popular packages:
# github.com/gin-gonic/gin — HTTP framework
# github.com/stretchr/testify — test assertions
# golang.org/x/sync — extended sync primitives
# github.com/spf13/cobra — CLI framework
# github.com/jackc/pgx/v5 — PostgreSQL drivergo get: การเพิ่มการพึ่งพา
ใช้ go get เพื่อเพิ่มการพึ่งพา คำสั่งนี้จะดาวน์โหลดโมดูลและอัปเดต go.mod กับ go.sum:
# Add latest version
go get github.com/stretchr/testify
# Add specific version
go get github.com/stretchr/testify@v1.8.4
# Add a pre-release version
go get github.com/foo/bar@main
# go get updates go.mod:
# require github.com/stretchr/testify v1.8.4การใช้การพึ่งพา
หลังจากใช้ go get แล้ว ให้นำเข้าและใช้งานแพ็กเกจตามปกติ:
package main
import (
"fmt"
"github.com/stretchr/testify/assert"
"testing"
)
func TestAdd(t *testing.T) {
assert.Equal(t, 4, 2+2, "math should work")
fmt.Println("assertion done")
_ = assert.New // suppress unused import
}go mod download
ดาวน์โหลดการพึ่งพาทั้งหมดที่แสดงอยู่ใน go.mod ไว้ล่วงหน้าไปยังแคชโมดูล:
# Download all deps from go.mod
go mod download
# Download specific module
go mod download github.com/gin-gonic/gin@v1.9.1
# Useful for:
# - Docker layer caching (copy go.mod/go.sum first, then download)
# - Pre-warming CI cache
# - Offline development setupการเลือกเวอร์ชันตามความหมาย: MVS
Go ใช้การเลือกเวอร์ชันต่ำสุด (MVS) โดยเลือกเวอร์ชันต่ำสุดที่จำเป็นและตรงตามข้อกำหนดของการพึ่งพาทั้งหมดเสมอ ไม่มีการอัปเกรดเวอร์ชันหลักโดยอัตโนมัติ:
# If A requires gin v1.9.0
# and B requires gin v1.9.1
# MVS selects v1.9.1 (minimum that satisfies both)
# To upgrade ALL dependencies to latest minor/patch:
go get -u ./...
# To upgrade specific package:
go get -u github.com/gin-gonic/gingo mod why — อธิบายการพึ่งพา
ค้นหาสาเหตุที่โมดูลจำเป็นต่อการสร้างโปรแกรมของคุณ:
# Why is encoding/json needed?
go mod why encoding/json
# Why is golang.org/x/net needed?
go mod why golang.org/x/net
# Output shows the import chain:
# github.com/myapp
# github.com/gin-gonic/gin
# golang.org/x/netgo mod vendor เพื่อการสร้างโปรแกรมที่ทำซ้ำได้
การใช้ผู้จำหน่ายจะล็อกการพึ่งพาทั้งหมดไว้ในที่เก็บโค้ดของคุณ ทำให้สร้างโปรแกรมซ้ำได้:
# Vendor all deps
go mod vendor
# Build only from vendor (no network)
go build -mod=vendor ./...
# Dockerfile pattern:
# COPY go.mod go.sum ./
# RUN go mod download
# COPY . .
# RUN go build ...โมดูลส่วนตัวด้วย GONOSUMCHECK และ GOPRIVATE
กำหนดค่า Go สำหรับโมดูลส่วนตัวที่โฮสต์อยู่บนเซิร์ฟเวอร์ภายใน:
# Tell Go not to use proxy/sumdb for private modules
export GOPRIVATE=github.com/mycompany/*
export GONOSUMCHECK=github.com/mycompany/*
# Or in go env:
go env -w GOPRIVATE=github.com/mycompany/*
# For enterprise Go proxy:
export GOPROXY=https://proxy.mycompany.com,directgo clean -modcache
ล้างแคชโมดูลเพื่อบังคับให้ดาวน์โหลดการพึ่งพาทั้งหมดใหม่:
# Clear entire module cache
go clean -modcache
# Clear cache for specific version
go clean -modcache github.com/gin-gonic/gin@v1.9.1
# Useful when:
# - Cache is corrupted
# - Testing with a fresh environment
# - Disk space cleanupตรวจสอบช่องโหว่: govulncheck
เครื่องมือตรวจสอบช่องโหว่อย่างเป็นทางการของ Go จะตรวจสอบการพึ่งพาของคุณเพื่อค้นหา CVE ที่ทราบ:
# Install govulncheck
go install golang.org/x/vuln/cmd/govulncheck@latest
# Scan your module
govulncheck ./...
# Output example:
# Vulnerability #1: GO-2023-1234
# github.com/foo/bar v1.2.3
# Fixed in: v1.2.4
# Suggestion: go get github.com/foo/bar@v1.2.4ตรวจสอบอย่างรวดเร็ว
คำสั่งใดใช้เพิ่มการพึ่งพาเวอร์ชันที่ระบุลงในโมดูล
ทบทวน: การพึ่งพาภายนอก
สรุป:
go get pkg@versionใช้เพิ่มการพึ่งพา- Go ใช้ MVS — เวอร์ชันต่ำสุดที่ตรงตามข้อกำหนดทั้งหมด
go mod tidyใช้ล้างการพึ่งพาที่ไม่ได้ใช้go mod vendorใช้สำหรับการสร้างโปรแกรมออฟไลน์ที่ทำซ้ำได้อย่างสมบูรณ์- ใช้
GOPRIVATEสำหรับโมดูลส่วนตัว - เรียกใช้
govulncheckเพื่อค้นหาช่องโหว่
คำถามที่พบบ่อย
บทเรียน “การเพิ่มดีเพนเดนซีภายนอก” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การเพิ่มดีเพนเดนซีภายนอก” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Go Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Go Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การเพิ่มดีเพนเดนซีภายนอก”
go get การกำหนดเวอร์ชัน และแคชของโมดูล คุณปฏิบัติ Go Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Go Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Go Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “การเพิ่มดีเพนเดนซีภายนอก” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Go Academy นี้ได้ไหม
ได้ บทเรียน Go Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- แพ็กเกจ: การจัดระเบียบโค้ด Go
- โมดูล Go ด้วย go mod
- การเพิ่มดีเพนเดนซีภายนอก
- แพ็กเกจภายในและพื้นที่ทำงาน