0Pricing
Go Academy · Pelajaran

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 driver

go 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.4

Menggunakan 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 setup

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

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

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

go 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 cleanup

Memeriksa 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.4

Pemeriksaan Singkat

Perintah mana yang menambahkan versi tertentu dari sebuah dependensi ke modul Anda?

Ringkasan: Dependensi Eksternal

Ringkasan:

  • go get pkg@version menambahkan dependensi
  • Go menggunakan MVS — versi minimum yang memenuhi semua persyaratan
  • go mod tidy membersihkan dependensi yang tidak digunakan
  • go mod vendor digunakan untuk kompilasi luring yang sepenuhnya dapat direproduksi
  • Gunakan GOPRIVATE untuk modul privat
  • Jalankan govulncheck untuk 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

  1. Paket: Menata Kode Go
  2. Modul Go dengan go mod
  3. Menambahkan Dependensi Eksternal
  4. Paket Internal dan Ruang Kerja
← Kembali ke Go Academy