Apa itu bahasa pemrograman Go atau Golang?
Go, yang juga dikenal sebagai Golang atau bahasa Go, adalah bahasa pemrograman sumber terbuka (Open Source) yang dikembangkan oleh Google. Para pengembang perangkat lunak menggunakan Go di berbagai sistem operasi dan framework untuk membuat aplikasi web, layanan cloud dan jaringan, serta berbagai jenis perangkat lunak lainnya.
Go merupakan bahasa yang bertipe statis, eksplisit, dan dimodelkan dari bahasa pemrograman C. Karena waktu startup-nya yang cepat, overhead runtime yang rendah, dan kemampuannya berjalan tanpa mesin virtual (VM), Go jadi sangat populer untuk menulis microservices dan berbagai kebutuhan lainnya. Selain itu, Go juga digunakan untuk pemrograman konkuren — yaitu strategi untuk menjalankan banyak tugas secara bersamaan, tidak berurutan, atau sebagian berurutan.
Bahasa Go terinspirasi dari produktivitas dan kesederhanaan relatif dari Python. Go menggunakan goroutine (proses ringan) dan kumpulan package untuk manajemen dependensi yang efisien. Go dirancang untuk menyelesaikan beberapa masalah seperti waktu build yang lama, dependensi yang tidak terkontrol, duplikasi upaya, kesulitan menulis tool otomatis, dan pengembangan lintas bahasa.
Sejarah Go
Google menciptakan Go untuk menyelesaikan tantangan rekayasa perangkat lunaknya sendiri dan sebagai alternatif dari C++. Saat itu, juga dibutuhkan bahasa dengan tingkat produktivitas yang lebih tinggi seiring makin populernya prosesor multicore.
Google mulai merancang Go pada tahun 2007. Para pengembangnya ingin menciptakan bahasa pemrograman yang mudah digunakan, tetapi tetap memiliki karakteristik bermanfaat dari bahasa lain seperti C++, Python, dan JavaScript. Go diumumkan sebagai proyek open source pada tahun 2009 agar komunitas bisa ikut berkolaborasi dalam pengembangan ide dan kode. Versi 1.0 kemudian dirilis pada tahun 2012.
Selama bertahun-tahun, banyak pembaruan dan fitur baru ditambahkan, seperti fitur generics pada tahun 2022. Popularitas Go terus meningkat dan digunakan oleh perusahaan besar seperti Google, Cloudflare, Dropbox, MongoDB, Netflix, SoundCloud, Twitch, dan Uber.
Apa yang bisa dilakukan oleh bahasa pemrograman Go?
Tim pengembang memanfaatkan berbagai fitur Go dalam pengembangan perangkat lunak:
- Pustaka standar berbasis paket terdistribusi yang memudahkan penambahan dan penggunaan fungsionalitas tambahan dalam kode.
- Manajemen paket kode memungkinkan pengelolaan paket buatan pengguna dan eksternal, serta memungkinkan publikasi paket dengan perintah yang sederhana.
- Static typing menyediakan sistem tipe yang memastikan kompatibilitas dan konversi, serta menghindari masalah dari bahasa dengan tipe dinamis.
- Dukungan pengujian termasuk unit test yang bisa dijalankan paralel dengan kode, memungkinkan debugging dan QA.
- Independen platform memungkinkan kode Go dikompilasi di hampir semua platform berkat desain modularnya.
- Model konkuren berbasis goroutine yang ringan seperti thread, serta channel yang memfasilitasi komunikasi antar-goroutine. Sintaks kodenya menyerupai pola umum dalam bahasa dinamis dan lebih mengutamakan komposisi antarmuka daripada pewarisan. Ini memungkinkan pengembang menulis program multitugas.
Berikut adalah beberapa tools bawaan Go:
- Gofmt secara otomatis memformat dan mengatur indentasi kode agar lebih mudah dibaca.
- Go run mengkompilasi dan menjalankan kode secara bersamaan.
- Go get terintegrasi dengan GitHub.
- Godoc menghasilkan dokumentasi berbasis HTML berdasarkan struktur kode dan komentar developer.
- Go test menjalankan unit test dan benchmark untuk menguji kode dan mengumpulkan data performa.
- Go build mengkompilasi paket dan dependensi Go menjadi library yang dapat dijalankan.
- Go vet memeriksa source code Go untuk menemukan kesalahan atau pola mencurigakan.
Keuntungan menggunakan Go
Beberapa keuntungan menggunakan Go antara lain:
- kompilasi dan eksekusi yang cepat;
- tidak butuh VM;
- portabilitas tinggi;
- mendukung konkuren (concurrency);
- interface mendukung sistem yang loose-coupled;
- pengumpulan sampah (garbage collection) otomatis;
- keamanan memori (memory safety);
- penanganan error yang independen; dan
- pustaka built-in yang sangat lengkap.
Keterbatasan Go
Namun, Go juga punya beberapa kekurangan seperti:
- meskipun sudah ada generics, Go tetap fokus pada kode sederhana dan mudah dibaca ketimbang kode abstrak dan implisit;
- kurangnya keamanan saat runtime;
- aturan penulisan kode yang ketat;
- tidak mendukung function overloading; dan
- bukan bahasa yang sepenuhnya berorientasi objek.
Contoh Program Sederhana
Berikut adalah beberapa contoh program sederhana dari bahasa Go :
1. Hello World
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
2. Fungsi dengan Parameter
package main
import "fmt"
func greet(name string) {
fmt.Println("Halo,", name)
}
func main() {
greet("Andi")
}
3. Penggunaan Kondisi
package main
import "fmt"
func main() {
umur := 20
if umur >= 18 {
fmt.Println("Kamu sudah dewasa.")
} else {
fmt.Println("Kamu masih di bawah umur.")
}
}
4. Looping
package main
import "fmt"
func main() {
for i := 1; i <= 5; i++ {
fmt.Println("Angka:", i)
}
}
5. Array dan Slice
package main
import "fmt"
func main() {
buah := []string{"apel", "jeruk", "pisang"}
for i, b := range buah {
fmt.Printf("Buah ke-%d: %s\n", i+1, b)
}
}
6. Goroutine
package main
import (
"fmt"
"time"
)
func cetakPesan(pesan string) {
for i := 0; i < 3; i++ {
fmt.Println(pesan)
time.Sleep(500 * time.Millisecond)
}
}
func main() {
go cetakPesan("Halo dari goroutine")
cetakPesan("Halo dari main thread")
}