Dasar GoLang Web

Belajar teknologi baru bagi saya sangat menyenangkan. Ada perasaan puas setiap kali mendapatkan ilmu baru terutama yang terkait dengan IT walaupun pada intinya kadang ujung-ujungnya juga digunakan untuk hal yang sama. Contoh paling gamblang adalah kita belajar bahasa atau web framework lain yang mana dipakai untuk membuat sesuatu yang tidak jauh berbeda dengan teknologi yang kita sudah familiar sebelumnya. Tetep aja sih, ngerasa seneng.

Bulan Maret tahun ini sebenarnya saya sudah niat untuk belajar Golang. Tapi gimana pelaksanaannya? Jalan sih tapi lambat haha. Ga mau beralasan, saya ga akan menyampaikan kenapa bisa selambat itu. Yang penting di sini progress adalah progress 😄

Di tulisan ini saya ingin sharing soal penggunaan Go dasar untuk membuat aplikasi web. Bagi saya belajar Go dengan membuat web lebih menarik dan memotivasi untuk belajar lanjut dari pada belajar Go dari dasar seperti membahas percabangan, perulangan dan lain-lain. Yuk kita mulai.

Instalasi Go

Bagian yang cukup membosankan tapi harus dilakoni, untungnya kita hanya perlu melakukannya sekali. Saya jelaskan dalam bentuk step by step untuk masing-masing sistem operasi.

Mac

Instalasi di Mac kita menggunakan bantuan homebrew.

1. Jalankan brew install go
2. Tambahkan path dimana go diinstal ke dalam PATH variabel

3. Jalankan perintah go version untuk mengecek apakah go sudah terinstal

Windows

1. Download installer-nya di https://golang.org/dl/, sesuaikan dengan arsitekturnya (32bit atau 64bit)
2. Jalankan installer-nya, cukup klik next, next, next sampai selesai.
3. Jalankan go version di dalam CMD untuk mengecek

Linux

1. Download file archive di https://golang.org/dl/, sesuaikan dengan arsitekturnya (32bit atau 64bit)
2. Extract archive tadi ke /usr/local

3. Tambahkan path instalasi go ke PATH variabel

4. Jalankan go version untuk melakukan pengecekan

Setting GOPATH

Setelah instalasi go ada satu hal lagi yang perlu kita urus yaitu pengaturan GOPATH. GOPATH adalah variabel yang berisi lokasi folder atau path di mana kita menyimpan project go. Di dalam sini nanti akan ada 3 folder yaitu src, pkg dan bin.

Project go harus ditempatkan di dalam folder src ini. Misalnya GOPATH kita set ke ~/go berarti saat ingin membuat project bernama belajar_go kita buat foldernya di ~go/src/belajar_go

Untuk set GOPATH ini caranya mirip dengan setting PATH di langkah instalasi tadi.

Untuk pengguna Linux export-nya ke ~/.bashrc

Hello World

Untuk formalitas dan tentunya supaya melihat bentuk dari bahasa Go, mari kita lakukan ritual menulis program Hello World. Buat file bernama hello.go.

Dari sini yang paling mencolok bagi saya selaku orang Ruby adalah indentasinya yang 8 spasi alih-alih 2 (salah fokus). Mari kita bahas satu-satu supaya paham.

Setiap file program di Go harus memiliki package dan di setiap project harus ada package yang bernama main yang digunakan sebagai entry point pengeksekusian progam. package main artinya kita menyatakan kalau file hello.go berada di package main.

Selanjutnya bagian import "fmt" sudah self explanatory, melakukan import terhadap package yang namanya fmt.

Di setiap program Go harus ada function yang bernama main() yang letaknya ada di dalam package main. Dari sini kita sudah bisa menebak kalau function ini adalah yang dijalankan pertama kali saat eksekusi program. Deklarasi function di Go menggunakan keyword func diikuti nama function-nya.

Terakhir adalah kita panggil function Println() yang ada di dalam package fmt untuk menampilkan sesuatu.

Jalankan go run hello.go untuk mengeksekusi kode di dalam file hello.go. Outputnya seperti ini.

Hello Web

Sekarang giliran kita belajar membuat hello world tapi di web. Go sudah datang dengan package yang memampukan kita membuat aplikasi web yang simpel. Yuk langsung koding. Buat file hello_web.go.

Kita bahas satu-satu yang baru di sini. Pertama adalah kita bisa melakukan import beberapa package sekaligus dengan bentuk yang seperti itu. Ada 2 package baru kali ini. Gunanya apa? Nanti akan tahu.

Membuat konstanta di Go digunakanlah keyword const, ini artinya kita punya konstanta bernama PORT yang nilainya string :8080.

Nah sekarang kita ke bagian yang menarik. Di Go, kita perlu membuat function yang menerima parameter http.ResponseWriter dan pointer http.Request yang kita pakai untuk menangani sebuah request http. Jadi kita buatlah function handleDynamic ini yang isinya menampilkan pesan Halo Keindahan Dunia diikuti waktu saat ini.

Sangat perlu diperhatikan adalah kita menggunakan Fprintln() kali ini, bukan lagi Println() seperti di program pertama. Fprintln() membutuhkan parameter pertama berupa writer.

Deklarasi variabel di Go ada 2 cara. Yang pertama adalah dengan menyebutkan tipe datanya dan yang kedua tanpa menyebutkan tipe data secara eksplisit tetapi cara yang ini sebuah variabel harus langsung diberi nilai.

Contoh cara pertama

Kita gunakan keyword var diikuti nama variabel kemudian tipe datanya. Dari situ suatu variabel bisa diberi nilai. Atau kalau mau langsung bisa jadi seperti ini.

Nah cara yang kedua adalah kita tak perlu menyebutkan tipe datanya. Seperti ini

Yang jadi pembeda utama adalah untuk memberikan nilai kita menggunakan := bukan =. Ini hanya dipakai untuk membuat variabel baru sekaligus memberikan nilainya. Jika kemudian kita ingin memberikan nilai baru maka cukup =

Lanjut lagi ada function main. Di dalam sini kita daftarkan function handleDynamic untuk menangani request http yang mampir ke / atau root url. Cara seperti ini biasanya disebut dengan routing, mengarahkan suatu request ke suatu url kepada kode program tertentu.

Terakhir kita jalankan http server dengan function ListenAndServe(). Di sini kita tangkap kembaliannya berupa error terus dicek deh itu ada errornya atau enggak, kalau ada maka kita tampilkan di console.

Go beda dengan yang lain dalam hal penanganan error. Di Go tidak ada yang namanya exception, alih-alih yang ada adalah mengembalikan nilai error jika ada.

Sebagai contoh coba hilangkan tanda : dari dalam konstanta PORT dan hilangkan juga bagian pengecekan err nil atau tidak. Niscaya ketika kita jalankan go run hello_web.go tidak akan muncul exception apa-apa dan tidak pula kita bisa mengakses localhost:8080 dan kita bengong aja ga tahu kenapa.

Sekarang jalan kan go run hello_web.go.

Facebook Comments
 

Agung Setiawan

Agung Setiawan adalah software engineer di BukaLapak.com, penulis sekaligus pecinta sastra, dan pembaca buku

 
Halo, perkenalkan saya Agung Setiawan.
Saya Software Engineer di BukaLapak.
Simak pemikian saya soal dunia Software Engineering via Twitter di @agungsetiawanmu dan facebook
Blog ini saya update seminggu sekali jadi sering-sering saja mampir
Mau belajar Vim bareng saya?
Belajar ngoding dari nol menggunakan PHP

Leave a Reply

Your email address will not be published. Required fields are marked *