CLOSURE GOLANG
CLOSURE GOLANG
Dimungkinkan untuk membuat fungsi di dalam fungsi:
KALIAN BISA MENCOBANYA KLIK DISINI
KALIAN BISA MENCOBANYA KLIK DISINI
func main() {
add := func(x, y int) int {
return x + y }
fmt.Println(add(1,1)) }
add := func(x, y int) int {
return x + y }
fmt.Println(add(1,1)) }
add adalah variabel lokal yang memiliki tipe func (int, int) int (fungsi yang mengambil dua int dan mengembalikan int).
Ketika kamu membuat fungsi lokal seperti ini kamu juga memiliki akses ke variabel lokal lainnya (ingat ruang lingkup dari materi sebelumnya):
func main() {
x := 0
increment := func() int {
x++
return x }
fmt.Println(increment())
fmt.Println(increment()) }
x := 0
increment := func() int {
x++
return x }
fmt.Println(increment())
fmt.Println(increment()) }
increment menambahkan 1 ke variabel x yang didefinisikan dalam ruang lingkup fungsi utama.
Variabel x ini dapat diakses dan dimodifikasi oleh fungsi increment. Inilah mengapa pertama kalinya kita memanggil increment, kita melihat 1 ditampilkan, untuk kedua kalinya kita menyebutnya, kita melihat 2 ditampilkan.
Fungsi seperti ini secara bersamaan dengan variabel non-lokal referensi dikenal sebagai closure.
Dalam hal ini increment dan variabel x membentuk closure.
Salah satu cara menggunakan closure adalah dengan menulis fungsi yang mengembalikan fungsi lain yang saat dipanggil dapat menghasilkan urutan angka. Misalnya coding dibawah ini adalah cara bagaimana kita dapat menghasilkan semua nomor genap:
func makeEvenGenerator() func() uint {
i := uint(0)
return func() (ret uint) {
ret=i
i+=2
return } }
func main() {
nextEven := makeEvenGenerator()
fmt.Println(nextEven()) // 0
fmt.Println(nextEven()) // 2
fmt.Println(nextEven()) // 4
}
i := uint(0)
return func() (ret uint) {
ret=i
i+=2
return } }
func main() {
nextEven := makeEvenGenerator()
fmt.Println(nextEven()) // 0
fmt.Println(nextEven()) // 2
fmt.Println(nextEven()) // 4
}
hasil coding |
makeEvenGenerator mengembalikan fungsi yang menghasilkan angka genap, setiap kali dipanggil menambah 2 ke variabel i lokal yang tidak seperti variabel lokal normal hanya bertahan antara panggilan, untuk lebih jelas silakan saja ganti angka 4 menjadi 5.
MATERI GOLANG
Jika kamu baru di pembelajaran golang, silakan untuk belajar dari materi pertama
Materi ke-1 : Program Pertama
Materi ke-2 : Cara Membaca Program
Materi ke-3 : Type Data
Materi ke-4 : Golang Number
Materi ke-5 : String pada Golang
Materi ke-6 : Boolean Pada Golang
Materi ke-7 : Variable Pada Golang
Materi ke-8 : Cara Memberi Nama Variabel
Materi ke-9 : Scope Pada Golang
Materi ke-10 : Konstanta Pada Golang
Materi ke-11 : Struktur Golang
Materi ke-12 : For Golang
Materi ke-13 : IF Golang
Materi ke-14 : Switch Case Golang
Materi ke-15 : Array Pada Golang
Materi ke-16 : Slice Pada Golang
Materi ke-17 : MAP Golang
Materi ke-18 : Functions Golang
Materi ke-19 : Mengembalikan banyak Nilai dan Variadik
Materi ke-20 : Closure golang
Materi ke-21 : Rekursif Golang
Materi ke-22 : Tunda, Panik, Dan Pulihkan
Materi ke-2 : Cara Membaca Program
Materi ke-3 : Type Data
Materi ke-4 : Golang Number
Materi ke-5 : String pada Golang
Materi ke-6 : Boolean Pada Golang
Materi ke-7 : Variable Pada Golang
Materi ke-8 : Cara Memberi Nama Variabel
Materi ke-9 : Scope Pada Golang
Materi ke-10 : Konstanta Pada Golang
Materi ke-11 : Struktur Golang
Materi ke-12 : For Golang
Materi ke-13 : IF Golang
Materi ke-14 : Switch Case Golang
Materi ke-15 : Array Pada Golang
Materi ke-16 : Slice Pada Golang
Materi ke-17 : MAP Golang
Materi ke-18 : Functions Golang
Materi ke-19 : Mengembalikan banyak Nilai dan Variadik
Materi ke-20 : Closure golang
Materi ke-21 : Rekursif Golang
Materi ke-22 : Tunda, Panik, Dan Pulihkan
Spread the love