Go (biasanya disebut sebagai Go), yang merupakan sistem manajemen dependensi baru yang diperkenalkan pada Go versi 1.11 pada tahun 2018. Go Modules dirancang untuk memudahkan manajemen dependensi dan mengatasi masalah yang sering timbul dengan sistem GOPATH yang lebih lama.
Berikut adalah beberapa konsep penting dalam Go Modules:
Go.mod: Ini adalah file konfigurasi untuk modul Go. Ini berisi daftar dependensi proyek, beserta nomor versi yang diinginkan. Go.mod juga mencatat versi Go minimal yang diperlukan untuk proyek tersebut. File ini berada di root proyek Go.
Go.sum: File ini berisi checksum dari setiap dependensi yang digunakan dalam proyek. Ini membantu mencegah adanya manipulasi pada dependensi dan memastikan bahwa Anda mendapatkan dependensi yang tepat setiap kali Anda membangun proyek.
Versi Semantik: Go Modules mengikuti prinsip SemVer (Versi Semantik), yang berarti nomor versi dependensi memiliki format MAJOR.MINOR.PATCH. Ketika Anda menambahkan dependensi ke proyek, Anda dapat menentukan range versi yang diizinkan untuk digunakan, misalnya:
module@v1.2.3
ataumodule@^1.2.3
.Perintah Go: Sejumlah perintah telah ditambahkan ke perangkat lunak Go untuk bekerja dengan Go Modules. Beberapa perintah ini meliputi:
go mod init
: Digunakan untuk menginisialisasi proyek Go Modules di direktori.go get
: Digunakan untuk menambahkan dependensi ke proyek.go build
/go run
: Perintah ini akan mengunduh dan mengelola dependensi proyek secara otomatis sesuai dengan file go.mod dan go.sum.
Vendor Directory (opsional): Sebelum Go Modules, pendekatan populer untuk manajemen dependensi adalah dengan meletakkan salinan kode dependensi di direktori "vendor". Go Modules juga mendukung pendekatan ini, yang berarti Anda dapat menyimpan dependensi di vendor Anda sendiri jika Anda memilih untuk tidak menggunakan proxy modul publik.
Dengan Go Modules, pengembang Go sekarang memiliki cara yang lebih baik untuk mengelola dependensi dan memastikan bahwa proyek mereka tetap konsisten dengan versi dependensi yang digunakan. Ini membuat kolaborasi lebih mudah dan memperkuat ekosistem Go secara keseluruhan.