Function pada golang - RealYukiSan/explore-go GitHub Wiki

Function

Berbicara tentang fungsi/method, saya jadi mengingat hal-hal penting terkait hal tersebut:

  1. teknik initialize fungsi: declaration dan expression:
  • named function expression, anonymous function yang di assign ke sebuah variabel (?) kalau di golang mungkin namanya function literals ya
  • anonymous function, merupakan sebuah fungsi tanpa nama dan biasanya digunakan sebagai function as parameter
  • IIFE - immediately invoked function expression, merupakan sebuah anonymous function yang langsung dieksekusi/dipanggil
  1. closure, function closure adalah sebuah fungsi yang mengakses variabel-variabel yang berada di lingkup yang lebih tinggi (outer scope/lexical scope) di mana fungsi tersebut didefinisikan. sederhananya fungsi di dalam fungsi :joy:
  2. function as parameter, atau lebih sering disebut sebagai handler dan ada juga function as callback
  3. rest parameter, yaitu sebuah istilah untuk fungsi yang menampung lebih dari satu parameter/argumen, di golang namanya variadic :joy:
  4. high order function, yaitu fungsi yang mengembalikan fungsi lain sebagai return valuenya, jika di python disebut sebagai decorator jadi inget dependency injection di typescript :v
  5. self-referential function, biasa diterapkan pada pattern recursive function, yaitu fungsi yang memanggil dirinya sendiri sebagai return value-nya. biasanya di dalam fungsi ini di beri sebuah pengkondisian, jika pengkondisian tersebut sudah terpenuhi maka akan mengeksekusi perintah untuk menghentikan loop tersebut.
  6. multiple return, fungsi yang mengembalikan return value nya lebih dari satu, kalo di js sih pakai array. tapi di golang gege coy, langsung di return seperate by comma! tanpa basa basi kasih square bracket :joy:
  7. Lexical scope adalah scope dimana variabel dapat diakses oleh scope tempat di definisikannya dan sub-blok scope

sebenernya materi terkait function ini disemua bahasa pemrograman sama2 saja pada intinya, hanya perbedaan pada pattern syntaxnya dan nama istilahnya saja.

untuk implementasi beberapa teknik penggunaan function, silahkan lihat commit ini

referensi:

pembahasan:

  • teknik membuat fungsi
  1. menggunakan expression (e.g lambda function)
  2. menggunakan declaration
  • teknik menggunakan fungsi:
  1. menggunakan fungsi untuk performing recursion
  2. high-order function: takes one or more functions as arguments (i.e. a procedural parameter, which is a parameter of a procedure that is itself a procedure), returns a function as its result. see conversation about First-class citizen for more info
  3. passing function as callback