Menambahkan Dependensi Eksternal
go get, pembuatan versi, dan cache modul
Menambahkan Dependensi Eksternal adalah pelajaran Go Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Go Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Go Academy mencakup 4 pelajaran total.
Menemukan Paket
Sumber utama untuk menemukan paket Go adalah pkg.go.dev. Cari paket, baca dokumentasi, dan lihat contoh penggunaannya:
# 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: Menambahkan Dependensi
Gunakan go get untuk menambahkan dependensi. Perintah ini mengunduh modul dan memperbarui go.mod serta 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.4Menggunakan Dependensi
Setelah go get, impor dan gunakan paket seperti biasa:
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
Unduh terlebih dahulu semua dependensi yang tercantum dalam go.mod ke tembolok modul:
# 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 setupPemilihan Versi Semantik: MVS
Go menggunakan Minimum Version Selection (MVS): Go selalu memilih versi minimum yang diperlukan dan memenuhi semua dependensi. Tidak ada peningkatan versi utama secara otomatis:
# 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 — Menjelaskan Dependensi
Cari tahu alasan sebuah modul diperlukan dalam kompilasi Anda:
# 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 untuk Kompilasi yang Dapat Direproduksi
Vendorisasi mengunci semua dependensi ke dalam repositori Anda agar kompilasi dapat direproduksi:
# 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 ...Modul Privat dengan GONOSUMCHECK dan GOPRIVATE
Konfigurasikan Go untuk modul privat yang dihosting di server internal:
# 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
Hapus tembolok modul untuk memaksa pengunduhan ulang semua dependensi:
# 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 cleanupMemeriksa Kerentanan: govulncheck
Alat pemindai kerentanan resmi Go memeriksa dependensi Anda untuk menemukan CVE yang telah diketahui:
# 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.4Pemeriksaan Singkat
Perintah mana yang menambahkan versi tertentu dari sebuah dependensi ke modul Anda?
Ringkasan: Dependensi Eksternal
Ringkasan:
go get pkg@versionmenambahkan dependensi- Go menggunakan MVS — versi minimum yang memenuhi semua persyaratan
go mod tidymembersihkan dependensi yang tidak digunakango mod vendordigunakan untuk kompilasi luring yang sepenuhnya dapat direproduksi- Gunakan
GOPRIVATEuntuk modul privat - Jalankan
govulncheckuntuk menemukan kerentanan
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Menambahkan Dependensi Eksternal” gratis?
Ya — teks lengkap “Menambahkan Dependensi Eksternal” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Go Academy, upgrade ke CoddyKit PRO. Kursus Go Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Menambahkan Dependensi Eksternal”?
go get, pembuatan versi, dan cache modul Kamu berlatih Go Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Go Academy?
Tidak diperlukan pengalaman sebelumnya. Go Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.
Berapa lama pelajaran “Menambahkan Dependensi Eksternal” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Go Academy ini?
Ya. Setiap pelajaran Go Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Paket: Menata Kode Go
- Modul Go dengan go mod
- Menambahkan Dependensi Eksternal
- Paket Internal dan Ruang Kerja