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

การเพิ่มดีเพนเดนซีภายนอก

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 driver

go 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/gin

go 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/net

go 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,direct

go 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

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

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