Golang saat ini populer dijadikan salah satu pilihan bahasa pemrogaman untuk membuat web, terutama Web API(Backend). Selain itu, di golang juga sudah di sediakan package untuk membuat Web, bahkan di sertakan pula package untuk implementasi unit testing untuk Web. Hal ini menjadikan pembuatan Web menggunakan golang lebih mudah, karena tidak butuh menggunakan library atau framework. Cara kerja golang web Web browser akan melakukan HTTP Request ke Web Server Golang menerima Request tersebut, lalu mengeksekusi request tersebut sesuai dengan yang diminta. …
Category: Bahasa Pemrograman
Sejak golang vesi 1.16, terdapat package baru bernama embed. Package embed adalah fitur baru untuk mempermudah membaca isi file pada saat compile time secara otomatis dimasukkan isi file nya ke dalam variable. Untuk detailnya bisa di review pada laman https://pkg.go.dev/embed Untuk melakukan embed ke variable, kita bisa mengimport package embed terlebih dahulu. Selanjutnya kita bisa tambahkan komentar //go:embed di ikuti dengan nama file nya, diatas variable yang kita tuju, variable yang dituju tersebut nanti secara otomatis akan berisi konten file …
Bahasa pemrogaman golang secara default memiliki sebuah package bernama database. Package database adalah package yang berisikan kumpulan standard interface yang menjadi standard untuk berkomunikasi ke database. Hal ini menjadikan kode program yang kita buat untuk mengakses jenis database apabun bisa menggunakan kode program yang sama. Yang berbeda hanya kode SQL yang perlu kita gunakan sesuai dengan database yang kita gunakan. Database Driver Sebelum kita membuat kode progrram menggunakan database di golang, kita wajib menambahkan driver database nya terlebih dahulu. Tanpa …
Context merupakan sebuah data yang isinya membawa value, sinyal cancel, sinyal timeout dan sinyal deadline. Context biasanya dibuat per request(misal setiap ada request masuk ke server melalui http request), context digunakan untuk mempermudah kita meneruskan value, dan sinyal antar proses. Kenapa context perlu dipelajari Context di golang biasa digunakan untuk mengirim data request atau sinyal ke proses lain atau dari gorutine ke goroutine yang lain. Dengan menggunakan context, ketika kita ingin membatalkan sebuah proses, kita cukup mengirim sinyal ke context …
Sebelumnya diawal kita sudah bahas bahwa goroutine itu sebenarnya dijalankan di dalam thread, pertanyaannya seberapa banyak thread yang ada di golang ketika aplikasi kita berjalan ? Untuk mengetahui berapa jumlah thread, kita bisa menggunakan GOMAXPROCS, yaitu sebuah function di package runtime yang bisa kita gunakan untuk mengubah atau mengambil jumlah thread. Secara default, jumlah thread di golang itu sebanyak jumlah cpu di komputer kita. Kita juga bisa melihat jumlah cpu dengan menggunakan function runtime.NumCpu(). Pada contoh diatas kita membuat 100 …
Timer adalah representasi suatu kejadian, ketika waktu timer sudah expired, maka event akan dikirim ke dalam channel, untuk membuat timer kita bisa menggunakan time.NewTimer(duration). Kode : Timer Jadi pada contoh diatas kita membuat timer pada baris 10 selama 5 detik, kemudian kita menunggu data dikirim ke channel di baris 13, sesuai yang dibuat sebelumnya harus nya data akan masuk ke channel setelah 5 detik. time.After Kadang kita hanya butuh channel nya saja, tidak membutuhkan data Timer nya, untuk melakukan hal …
Sekarang kita akan membahas salah satu masalah yang sering terjadi dalam concurency atau pararell programming yaitu race condition, saat kita menggunakan goroutine dia tidak hanya berjalan secara concurrent tetapi bisa pararell juga, karena bisa pararell maka akan ada beberapa thread yang berjalan secara pararell. Hal ini sangat berbahaya ketika kita melakukan manipulasi data variable yang sama atau istilah nya sharing variable, jadi ada satu variable yang diakses oleh beberapa goroutine di waktu yang sama. Hal ini bisa menyebabkan masalah yang …
Kadang ada kasus dimana kita membuat beberapa channel, dan menjalankan beberapa goroutine untuk tiap channel nya, lalu kita ingin mendapatkan data dari channel tersebut, nah jika kita menggunakan perulangan for range maka akan ribet karena itu hanya bisa digunakan untuk satu channel. Untuk melakukan hal tersebut kita bisa menggunakan select channel yang ada di golang, dengan menggunakan select channel kita bisa memilih data tercepat dari beberapa channel, jika data datang secara bersamaan maka akan diambil terlebih dahulu secara random salah …
Terkadang terdapat kasus dimana channel dikirim data secara terus menerus oleh pengirim nya, dan kadang tidak jelas kapan pengirim tersebut berhenti menerima data. Salah satu yang bisa kita lakukan adalah dengan menggunakan perulangan range ketika menerima data dari channel, ketika sebuah channel di close maka secara otomatis perulangan tersebut akan berhenti. Ini lebih sederhana dari pada kita melakukan pengecekan channel secara manual. Kode program range channel Untuk lebih jelas perhatikan contoh kode program berikut ini Pada baris kode diatas, seperti …
Seperti yang dijelaskan pada artikel sebelum-sebelumnya bahwa channel itu hanya bisa menerima 1 data, artinya jika kita menambahkan data ke 2 maka kita disuruh menunggu sampai data ke 1 ada yang mengambil. Tetapi terkadang ada kasus dimana pengirim lebih cepat dibandingkan penerima, dalam hal ini jika kita menggunakan channel maka otomatis pengirim akan ikut lambat juga, conothnya misalnya pengirim dalam 1 detik mengirim 2 data tetapi ternyata penerima hanya bisa mengambil 1 data dalam 1 detik maka otomatis pengirim tidak …
Social Profiles