Golang, atau yang lebih dikenal sebagai Go, adalah bahasa pemrograman yang dikembangkan oleh Google. Awalnya dirancang untuk mengatasi masalah skalabilitas dan konkurensi pada server modern, Go kini telah menjadi pilihan populer untuk pengembangan backend, API, dan bahkan situs web statis. Keunggulan utama Go terletak pada kecepatan kompilasi yang luar biasa, performa runtime yang tinggi, serta sintaks yang sederhana dan mudah dibaca. Artikel ini akan memandu Anda memahami langkah awal dalam membuat website dengan Golang.
Dalam ekosistem pengembangan web yang didominasi oleh JavaScript (Node.js) dan Python, Go menawarkan alternatif yang unik. Go dikompilasi menjadi kode mesin, menghasilkan aplikasi mandiri yang sangat cepat. Ini berarti kebutuhan sumber daya (memori dan CPU) cenderung lebih rendah dibandingkan dengan bahasa berbasis interpreter. Bagi aplikasi yang memerlukan latensi rendah dan mampu menangani ribuan koneksi bersamaan (high concurrency), Go adalah juaranya berkat goroutine-nya.
Sebelum mulai membuat website dengan Golang, pastikan Anda telah menginstal Go di sistem Anda. Kunjungi situs resmi Go dan unduh installer yang sesuai untuk sistem operasi Anda. Setelah instalasi, verifikasi instalasi dengan menjalankan perintah berikut di terminal:
go version
Selanjutnya, buat direktori proyek baru. Misalnya, kita akan membuat proyek bernama web-golang-sederhana.
mkdir web-golang-sederhana
cd web-golang-sederhana
go mod init example.com/web-golang-sederhana
Inti dari setiap aplikasi web di Go adalah package net/http. Paket ini memungkinkan Anda membuat server web yang fungsional hanya dengan beberapa baris kode. Mari kita buat file utama bernama main.go.
Di dalam main.go, kita akan mendefinisikan fungsi handler yang akan merespons permintaan (request) dan menulis respons (response) kembali ke klien.
package main
import (
"fmt"
"net/http"
)
func handlerHome(w http.ResponseWriter, r *http.Request) {
// Mengatur header Content-Type
w.Header().Set("Content-Type", "text/html; charset=utf-8")
// Menulis respons ke klien
fmt.Fprintf(w, "Selamat Datang di Website Go!
")
fmt.Fprintf(w, "Ini adalah server HTTP paling dasar yang dibuat dengan Golang.
")
}
func main() {
// Mendaftarkan handler untuk path "/"
http.HandleFunc("/", handlerHome)
fmt.Println("Server berjalan di http://localhost:8080")
// Memulai server HTTP pada port 8080
err := http.ListenAndServe(":8080", nil)
if err != nil {
fmt.Println("Gagal memulai server:", err)
}
}
Setelah kode tersimpan, Anda dapat menjalankan server web Anda langsung dari terminal menggunakan perintah:
go run main.go
Anda akan melihat output: Server berjalan di http://localhost:8080. Buka browser Anda dan kunjungi alamat tersebut. Anda kini telah berhasil membuat website dengan Golang yang berfungsi!
Server dasar di atas hanya mengirim teks mentah. Untuk membuat tampilan yang lebih kompleks, kita akan menggunakan package html/template Go. Ini memungkinkan pemisahan logika server (Go) dari presentasi (HTML).
Pertama, buat folder baru bernama templates dan masukkan file index.html di dalamnya.
templates/index.html:
<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="UTF-8">
<title>Template Go</title>
</head>
<body>
<h1>Halo, {{.NamaPengguna}}!</h1>
<p>Data ini disuntikkan dari backend Go.</p>
</body>
</html>
Perbarui main.go untuk memuat dan merender template:
// ... (impor lainnya)
import "html/template"
// Struct untuk data yang akan dikirim ke template
type HalamanData struct {
NamaPengguna string
}
func handlerTemplate(w http.ResponseWriter, r *http.Request) {
// 1. Parsing template
tmpl, err := template.ParseFiles("templates/index.html")
if err != nil {
http.Error(w, "Template tidak ditemukan", http.StatusInternalServerError)
return
}
// 2. Menyiapkan data
data := HalamanData{NamaPengguna: "Pengembang Go"}
// 3. Eksekusi template, mengirimkan data
tmpl.Execute(w, data)
}
func main() {
http.HandleFunc("/", handlerTemplate) // Ubah handler utama
// ... (ListenAndServe tetap sama)
}
Dengan metode ini, proses membuat website dengan Golang menjadi terstruktur. Untuk proyek yang lebih besar, pertimbangkan menggunakan framework seperti Gin atau Echo, namun untuk fondasi yang kuat, standard library Go sudah lebih dari cukup.
Go memfasilitasi arsitektur server yang bersih dan terstruktur. Dengan fondasi ini, Anda dapat dengan mudah memperluas aplikasi web Anda, menambahkan *routing* yang lebih kompleks, koneksi database, atau bahkan membangun API mikro layanan yang solid menggunakan kekuatan Golang.