Sitemap

Go — Basic (Indonesia)

4 min readMay 11, 2026

--

Press enter or click to view image in full size

Hari ke 27 mencoba konsisten menulis, hari ini kita akan membasah tentan GO, lets go

Go lahir dari frustrasi engineer Google yang harus memilih antara Python (produktif tapi lambat), C++ (cepat tapi kompleks), atau Java (verbose dan berat). Go dirancang sebagai jalan tengah: cepat dikompilasi, cepat dijalankan, dan cepat dipelajari — ketiganya sekaligus.

Keunggulan dan Kekurangan

Press enter or click to view image in full size

Cocok pakai Go:

  1. membangun backend service atau API yang harus menangani banyak request bersamaan. (Goroutine memungkinkan ribuan koneksi concurrent dengan penggunaan memori yang sangat kecil dibanding thread tradisional)
  2. Ketika membuat CLI tools atau developer tooling (Go menghasilkan single binary yang bisa langsung didistribusikan tanpa runtime dependency. Pengguna tinggal download dan jalankan)
  3. Ketika membangun infrastruktur atau sistem terdistribusi (kalau proyekmu menyentuh area seperti proxy, load balancer, message queue, atau service mesh, Go adalah pilihan yang sangat natural)
  4. Ketika performa penting tapi kamu tidak mau kompleksitas C++/Rust (Go memberikan sekitar 80–90% performa C dengan 20% kompleksitasnya.)
  5. Ketika tim kamu besar dan perlu konsistensi kode (go fmt menghilangkan debat style, dan sintaks yang minimalis membuat kode Go yang ditulis orang lain mudah dibaca.)

Sebaiknya pilih bahasa lain jika

  1. Membangun aplikasi mobile atau desktop dengan GUI yang kaya pilih Swift/Kotlin untuk mobile, atau Electron/Tauri untuk desktop. Ekosistem GUI Go sangat tipis.
  2. Bekerja di domain machine learning, data analysis, atau scripting — Python dengan ekosistem NumPy, Pandas, PyTorch-nya tidak tertandingi di sini.
  3. Butuh kontrol memori sangat presisi dan tidak ada GC sama sekali — Rust lebih tepat untuk embedded systems atau real-time systems dengan latency di bawah 1ms.
  4. Membangun skrip kecil atau automasi sederhana — overhead menulis Go untuk hal-hal trivial tidak worth it, Python atau Bash lebih pragmatis.

Install

Download di :

Kalau sudah install deh, taruh di directory kesayangamu. Untuk cek sudah ter install atau belum bisa

go version
// output
// go version go1.26.3 windows/386

Pertama kita buat dulu Foder untuk gonya ya: buat directory kosong

  1. Buat Directory kosong
  2. Buka di vs code
  3. Install lib go di vs code biar lebih mudah codingnya
  4. Buat file baru bernama app.go
  5. Buat modul dengan cara go mod init example.com/first-app

Library:

Press enter or click to view image in full size

app.go

package main

import (
"fmt"
)

func main() {
var revenue float64
var expenses float64
taxtRate := 6.5
fmt.Print("Revenude: ")
fmt.Scan(&revenue) // & pointer

fmt.Print("Expenses: ")
fmt.Scan(&expenses)

ebt := revenue - expenses
profit := (revenue - (revenue * (taxtRate / 100))) - expenses
ratio := ebt / profit
fmt.Println("EBT : ", ebt)
fmt.Printf("PROFIT : %.2f \n", profit)
fmt.Printf("RATIO : %.2f \n", ratio)
}

Pointer

Pointer adalah variabel yang menyimpan alamat memori dari variabel lain, bukan nilainya langsung.

Get Arif Dwi Prasetya’s stories in your inbox

Join Medium for free to get updates from this writer.

Kenapa fmt.Scan butuh &revenue?

Karena fmt.Scan perlu mengubah nilai revenue dari dalam fungsinya. Kalau kamu kirim revenue tanpa &, Go akan menyalin nilainya — perubahan di dalam fmt.Scan tidak akan berpengaruh ke variabel aslimu.

Dengan &revenue, kamu memberikan alamat langsung ke variabel asli, sehingga fmt.Scan bisa menulis hasil input user ke sana.

&   // ambil alamat memori sebuah variabel
* // akses nilai di alamat tersebut (dereference)

revenue := 1000.0

fmt.Println(revenue) // output: 1000
fmt.Println(&revenue) // output: 0xc0000b4008 (alamat memori)

Ilustrasi perbedaannya:

func tanpaPointer(x float64) {
x = 999 // hanya mengubah salinan, aslinya tidak berubah
}

func denganPointer(x *float64) {
*x = 999 // mengubah nilai di alamat aslinya
}

func main() {
revenue := 1000.0

tanpaPointer(revenue)
fmt.Println(revenue) // tetap 1000

denganPointer(&revenue)
fmt.Println(revenue) // berubah jadi 999
}

Ringkasnya:

  • Kirim nilai biasa → fungsi dapat salinan, asli aman
  • Kirim &variabel → fungsi dapat alamat, bisa ubah aslinya langsung

Jangan lupa jalankan untuk membuat modulnya, nanti akan terbentuk go.mod

go mod init example.com/first-app

Go modules adalah sistem manajemen dependensi resmi Go sejak versi 1.11. File go.mod adalah jantungnya — dia mendefinisikan identitas dan kebutuhan proyekmu. Mirip seperti package.json, pom.xml.

Ini adalah nama unik proyekmu di seluruh dunia. Formatnya mengikuti konvensi URL, tapi bukan berarti URL itu harus benar-benar ada. Fungsinya ada dua:

Gambaran lengkap go.mod saat project berkembang:

module example.com/investment-calc

go 1.26.3

require (
github.com/gin-gonic/gin v1.9.1 // dependensi eksternal
github.com/joho/godotenv v1.5.1
)

Kalau sudah kemudian bisa kita jalankan dengan cara:

go run .

Kemudian bisa kita input, contoh

Sekian artikel yg ini semoga bermanfaat ya kan pun. Terima kasih

— Arif Dwi Prasetya

--

--