Penyiapan Lingkungan

Instalasi Go, GOPATH versus modul, dan editor dengan gopls.

Daftar isi

Lingkungan kerja Go yang benar hanya terdiri atas tiga bagian, yaitu pemasangan alat go, pemahaman tentang tempat Go menyimpan berkasnya, dan editor yang terhubung dengan penganalisis kode. Topik ini membahas ketiganya secara berurutan, sekaligus meluruskan kebingungan seputar GOPATH yang masih sering muncul pada tutorial lama. Setelah selesai, perintah go terpasang dan teruji, modul pertama siap dibuat, dan editor sudah memberikan bantuan penulisan kode.

Memasang Go#

Pemasang resmi Go tersedia di halaman unduhan go.dev/dl untuk setiap sistem operasi utama. Pada Windows dan macOS, pemasangan berupa satu berkas instalasi yang menyalin alat go ke lokasi standar dan menyiapkan PATH secara otomatis. Pada Linux, pemasangan dilakukan dengan mengekstrak arsip tarball, yaitu berkas terkompresi berekstensi .tar.gz, ke folder /usr/local/go. Selanjutnya, /usr/local/go/bin didaftarkan ke variabel lingkungan PATH. Isi folder biner itu hanya dua alat, yaitu go dan gofmt, sehingga pemasangannya sangat ringkas.

bash
# tidak-dijalankan
# mengekstrak arsip pemasangan Go ke /usr/local pada Linux
tar -C /usr/local -xzf go1.27.3.linux-amd64.tar.gz
# mendaftarkan folder biner Go ke PATH melalui berkas konfigurasi shell
echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.profile

Nomor versi pada nama arsip menyesuaikan halaman unduhan, sedangkan langkah pemasangan resmi untuk setiap sistem operasi selalu termuat pada tautan di bagian Referensi. Setelah terminal baru dibuka, pemasangan diuji dengan satu perintah berikut.

bash
# memeriksa versi Go yang terpasang
go version
text Keluaran
go version go1.27.3 linux/amd64

Keluaran di atas berisi tiga informasi sekaligus. Alat go berada pada versi 1.27.3, berjalan di atas sistem operasi linux, dan menyasar arsitektur prosesor amd64. Pasangan linux dan amd64 itulah target bawaan go build pada mesin tempat perintah dijalankan, sehingga biner yang dihasilkan siap berjalan di lingkungan yang sama.

Peran GOPATH hari ini#

Perintah go env menampilkan seluruh pengaturan lingkungan yang dibaca perintah go. Dua di antaranya paling sering dibutuhkan, yaitu GOPATH dan pasangan GOOS GOARCH. Keduanya diperiksa dengan perintah berikut.

bash
# menampilkan nilai GOPATH
go env GOPATH
# menampilkan sistem operasi dan arsitektur target
go env GOOS GOARCH
text Keluaran
/home/kal/go
linux
amd64

Nilai GOPATH menunjuk folder di dalam direktori rumah pengguna, yaitu /home/kal/go pada lingkungan ini. Secara umum, nilai GOPATH adalah $HOME/go. Pada masa lalu folder itu menjadi tempat wajib seluruh kode Go, tetapi kini perannya jauh lebih kecil, yaitu menyimpan cache unduhan modul pada subfolder pkg/mod dan biner alat bantu pada subfolder bin. Kode proyek tidak lagi wajib berada di sana.

GOPATH versus modul#

Sebelum tahun 2018, seluruh kode Go wajib berada di bawah folder GOPATH, tepatnya pada subfolder src, karena jalur impor paket, yaitu teks yang diketik pada baris import, diturunkan dari posisi berkas di folder itu. Kebijakan ini memaksa semua proyek menumpuk di satu tempat dan menyulitkan pengelolaan versi pustaka pihak ketiga. Situasi itu berubah sejak Go 1.11 memperkenalkan modul (module), yaitu unit pengelolaan dependensi yang berdiri sendiri. Sejak Go 1.16, mode modul menjadi perilaku bawaan tanpa pengaturan apa pun.

Modul ditandai satu berkas bernama go.mod pada akar proyek. Berkas itu menyatakan jalur modul, yaitu nama proyek yang digunakan untuk mengimpor paket-paketnya, serta versi Go yang menjadi acuan. Prosedur pembuatannya diuji pada langkah berikut.

bash
# menyiapkan folder proyek latihan
rm -rf /tmp/gomodul && mkdir -p /tmp/gomodul
# pindah ke folder proyek
cd /tmp/gomodul
# menginisialisasi modul bernama kalkulator-nilai
go mod init kalkulator-nilai
# menampilkan isi berkas go.mod yang dihasilkan
cat go.mod
text Keluaran
go: creating new go.mod: module kalkulator-nilai
module kalkulator-nilai

go 1.27.3

Keluaran tersebut menunjukkan dua hal. Perintah go mod init membuat go.mod dan melaporkannya, sedangkan isi berkasnya hanya dua baris kunci, yaitu jalur modul dan versi acuan. Dengan berkas itu saja, folder mana pun sudah menjadi modul yang sah. Perbandingan kedua era dirangkum pada tabel berikut.

AspekEra GOPATHEra modul
Lokasi kodeWajib di bawah GOPATH/srcBebas di folder mana pun
Penanda proyekPosisi folderBerkas go.mod di akar proyek
Jalur imporDiturunkan dari posisi folderDinyatakan oleh jalur modul
Versi pustakaTidak ada aturan bawaanTerkelola lewat go.mod dan go.sum

Editor dengan gopls#

Editor modern tidak memahami bahasa pemrograman apa pun sebelum diberi alat yang memahaminya. Untuk Go, peran itu dipegang gopls, yaitu language server resmi yang menganalisis kode dan menyajikan hasilnya kepada editor melalui protokol standar. Setelah gopls berjalan, editor menyediakan penyelesaian otomatis, lompatan ke definisi, tanda kesalahan tipe secara langsung, pengubahan nama yang aman, dan pemformatan dengan gofmt saat berkas disimpan.

Dukungan editor tersedia dalam berbagai bentuk. Visual Studio Code menyediakan ekstensi Go resmi yang memasang gopls secara otomatis ketika berkas Go pertama kali dibuka, sedangkan IDE seperti GoLand membawa analisis kodenya sendiri. Editor terminal seperti Vim dan Neovim terhubung melalui konfigurasi language server protocol (LSP). Pada lingkungan yang perlu memasang gopls secara manual, perintahnya adalah sebagai berikut.

bash
# tidak-dijalankan
# memasang gopls dari repositori resmi alat Go
go install golang.org/x/tools/gopls@latest

Perintah di atas mengunduh dan memasang gopls ke subfolder bin di dalam GOPATH, sehingga alat ini berdampingan dengan biner lain yang dipasang lewat go. Pemasangan membutuhkan koneksi internet dan hanya dilakukan sekali, sedangkan pembaruannya cukup diulang dengan perintah yang sama.

Kesalahan umum#

  • Mengetik go lalu muncul pesan command not found. Penyebabnya adalah /usr/local/go/bin belum terdaftar di PATH, atau terminal belum dibuka ulang setelah pemasangan. Perbaikannya adalah mendaftarkan /usr/local/go/bin ke PATH pada berkas konfigurasi shell, membuka terminal baru, lalu mengulangi go version.
  • Menempatkan proyek di GOPATH/src karena mengikuti tutorial lama. Sejak era modul, kebiasaan itu tidak diperlukan dan justru membingungkan, karena proyek bermodul bebas berada di folder mana pun. Ikuti tutorial yang menggunakan go mod init pada akar proyeknya.
  • Menjalankan go build pada proyek tanpa go.mod. Perintah go mencari berkas itu sampai ke folder induknya, dan apabila tidak ditemukan, muncul pesan error yang menyebut go.mod tidak ada. Perbaikannya adalah menjalankan go mod init di akar proyek terlebih dahulu.

Ringkasan#

  • Pemasangan Go berarti menyalin alat go dan gofmt ke sistem, memastikan /usr/local/go/bin ada di PATH, lalu mengujinya dengan go version.
  • GOPATH kini berperan sebagai lokasi cache modul dan biner alat bantu, sedangkan kode proyek bebas berada di folder mana pun.
  • Proyek Go modern ditandai berkas go.mod yang dibuat dengan go mod init, dan mode modul menjadi bawaan sejak Go 1.16.
  • gopls menyediakan analisis kode untuk editor melalui LSP, meliputi penyelesaian otomatis, tanda error, dan pemformatan dengan gofmt.

Referensi#