Pada artikel sebelumnya kita telah belajar apa itu break & continue dan cara menggunakannya pada bahasa pemrogaman go atau golang. apabila anda belum mengikuti artikel sebelumnya saya sarankan anda untuk membaca artikel sebelumnya tentang Golang – Pengenalan dan cara menggunakan case expression. Dan artikel kali ini kita akan belajar tentang function dan cara menggunakannya pada bahasa pemrogaman go.
Pengenalan function
Function adalah sebuah blok kode yang sengaja dibuat dalam program agar dapat digunakan secara berulang-ulang. Cara membuat function sebenarnya sangat sederhana, hanya dengan menggunakan kata kunci func
diikuti dengan nama function nya dan blok kode dari isi functionnya. Setelah membuat function, kita dapat mengeksekusi function tersebut dengan memanggilnya menggunakan kata kunci nama function dan di ikuti kurung buka, kurung tutup.
Membuat function
Untuk membuat function kita hanya perlu mengetikkan kata kunci func namaFunction() { baris kode yang di eksekusi saat function di panggil }

Pada gambar diatas kita membuat sebuah function deangan nama hello
pada baris ke 11 dan function tersebut akan menampilkan kata “Hello world” ke terminal saat di function di panggil di baris ke 7.
Function parameter
Saat membuat function terkadang kita membutuhkan data dari luar function, inilah yang kita sebut parameter, saat membuat function kita bisa menambahkan parameter pada function, bisa satu atau lebih dari satu. Parameter sendiri tidaklah wajib saat kita membuat function oleh karena itu sebelumnya kita bisa membuat function tanpa parameter. Namun saat kita membuat parameter pada suatu function dan saat kita memanggil function tersebut maka kita wwajib memasukkan data pada parameter sesuai edngan tipe datanya.
Untuk membuat parameter pada function caranya mirip dengan deklareasi variable yaitu dengan menambahkan nama parameternya dan diikuti dengan tipe datanya, apabila parameter lebih dari satu maka dapat di pisahkan dengan ,
(koma). Nama parameter bersifat unik jadi jika sudah dipakai pada parameter sebelumnya maka tidak bisa digunakn lagi untuk parameter selanjutnya(dalam satu function).

Function return values
Function dapat mengembalikan data, sebelumnya kita sudah membuat function tetapi bedanya function tersebut tidak mnegembalikan data. Untuk memberitahu bahwa function tersebut mengembalikan data maka kita harus menuliskan tipe data pengembalian datanya setelah kurung buka kurung tutup. Untuk mengembalikan data dari function, kita dapat menggunakan kata kuncu return
diikuti dengan datanya.

Returning multiple values
Function tidak hanya dapat mengembalikan satu value tetapi juga dapat mengembalikan multiple value. Untuk memberitahu jika fanction mengembalikan multiple value kita harus menulis semua tipe data return value nya di function, walau tipe datanya sama tetap harus di tuliskan contohnya (string, string)
.

Lantas bagaimana jika kita hanya membutuhkan beberapa return value saja dan tidak membutuhkan semua valuenya, contohnya seperti function return value sebelumnya yang me return firstName & lastName
tetapi kita hanya membutuhkan firstName
nya saja, jika kita ingin menghiraukan lastName
maka kita bisa menggunakan tanda _
(garis bawah) seperti berikut

Named return value
Biasanya saat kita memberi tahu bahwa sebuah function mengembalikan value, maka kita hanya mendeklarasikan tipe data return value di function. Pada golang kita juga bisa membuat variable secara langsung di tipe data return function nya.

Pada kode diatas kita langsung membuat variable pada bagian tipe data return value, dan di dalam blok kode kita hanya perlu merubah isi data dari variable tersebut karena sudah di deklarasikan dan juga untuk mengembalikan value kita hanya perlu menggunakan kata kunci return
saja tanpa di ikuti data yang di kembalikan, karena secara default golang akan mengembalikan semua variable yang sudah di deklarasikan sebelumnya.
Variadic function
Parameter terakhir pada sebuah function memili kemampuan untuk dijadikan varargs(varaiable arguments). Varargs artinya data nya dapat menrima lebih dari satu input, anggap saja semacam array. Varargs pada function harus di tempatkan pada posisi paling akhir tidak boleh di awal atau di tengah.

Function as value
Function adalah first class citizen di golang, atau function bisa berdiri sendiri berbeda dengan JAVA yang dimana kita tidak bisa membuat function tanpa class. Selain itu function pada golang juga dapat di simpan sebagai variable yang mana nantinya kita dapat menggunakan variable tersebut untuk dikirimkan sebagai argument pada pemanggilan function lainnya.

Function as parameter
Function tidak hanya bisa kita simpan di dalam variable sebagai value saja, tetapi kita juga bisa gunakan sebagai parameter untuk function lain.

Pada kode di atas kita membuat 2 function tambahan yaitu sayHelloWithFilter & spamFilter
yang dimana spamFilter
adalah sebuah function yang digunakan untuk memfilter kata-kata kasar dalam contoh kali ini kita memfilter kata “Anjing” jadi jika spamFilter
menerima parameter dengan kata tersebut maka akan mengembalikan ...
dan selain itu akan mengembalikan data yang diisi.
Kemudian function sayHelloWithFilter
kita gunakan untuk mencetak nama yang kita masukkan tetapi akan di filter terlebih dahulu menggunakan function spamFilter
lebih tepatnya spamFilter
akan kita kirim sebagai parameternya function sayHelloWithFilter
.
Function type declarations
Kadang jika function terlalu panjang maka akan ribet untuk menuliskannya dalam parameter. Type declarations juga dapat digunakan untuk membuat alias sebuah function shingga akan lebih udah saat kita menuliskannya sebagai parameter.

Anonymous function
Sebelumnya setiap membuat function, kita akan memeberikan nama pada function tersebut, namun kadang ada kalanya lebih mudah membuat function secara langsung di variable atau parameter tanpa harus membuat function terlebih dahulu. Hal tersebut dinamakan anonymous function atau function tanpa nama. Contohnya seperti berikut

Pada contoh diatas kita telam membuat function as parameter seperti sebelumnya pada baris 20, kemudian kita membuat function anonymous yang dimasukkan ke variable blacklist
pada baris ke 7 yang nantinya di gunakan dan dikirimkan sebagai parameter pada baris ke 11. Kemudian pada baris ke 13 kita membuat function anonymous langsung dalam parameter.
Rescursive function
Apa itu rescursive function, rescursive function adalah function yang memanggil dirinya sendiri. Kadang kita akan menemukan dimana menggunakan rescursive function lebih mudah dari pada tidak menggunakan rescursive function, contohnya adalah saat kita akan menyelesaikan kasus faktorial. Perhatikan contoh dibawah ini.

Pada gambar diatas kita membuat 2 function unutk menyelesaikan kasus faktorial yaitu, function factorialLoop
dimana kita menyelesaikan nya dengan sebuah looping dan kita juga membuat function factorialRecrusive
yang mana ini akan menyelesaikan factorial dengan memanggil dirinya sendiri atau recursive function.
Penutup
Pada artikel kali ini kita telah belajar cara menggunakan Function pada bahasa pemrogaman golang. Dan pada artikel selanjutnya saya akan membahas Closure pada golang.