The Psychology of Money Edisi RevisiSeorang genius yang kehilangan kendali atas emosinya bisa mengalami bencana keuangan. Sebaliknya, orang biasa tanpa pendidikan finansial bisa kaya jika mereka punya sejumlah keahlian terkait perilaku yang tak berhubungan dengan ukuran kecerdasan formal. Buy |
Cakupan informasi yang bisa didapatkan lewat reflection sangat luas, seperti melihat struktur variabel, tipe, nilai pointer, dan banyak lagi.
Go menyediakan package reflect
, berisikan banyak sekali fungsi untuk keperluan reflection. Di sini ini, kita akan belajar tentang dasar penggunaan package tersebut.
Dari banyak fungsi yang tersedia di dalam package tersebut, ada 2 fungsi yang paling penting untuk diketahui, yaitu reflect.ValueOf()
dan reflect.TypeOf()
.
reflect.ValueOf()
akan mengembalikan objek dalam tipe reflect.Value
, yang berisikan informasi yang berhubungan dengan nilai pada variabel yang dicarireflect.TypeOf()
mengembalikan objek dalam tipe reflect.Type
. Objek tersebut berisikan informasi yang berhubungan dengan tipe data variabel yang dicariDengan menerapkan konsep tersebut, kita bisa membuat fungsi didalam fungsi, atau bahkan membuat fungsi yang mengembalikan fungsi.
Closure merupakan anonymous function atau fungsi tanpa nama. Biasa dimanfaatkan untuk membungkus suatu proses yang hanya dipakai sekali atau dipakai pada blok tertentu saja.
Mungkin lebih pas kalau goroutine disebut sebagai mini thread. Goroutine sangat ringan, hanya dibutuhkan sekitar 2kB memori saja untuk satu buah goroutine.
Eksekusi goroutine bersifat asynchronous, menjadikannya tidak saling tunggu dengan goroutine lain.
Goroutine merupakan salah satu bagian paling penting dalam concurrent programming di Go. Salah satu yang membuat goroutine sangat istimewa adalah eksekusi-nya dijalankan di multi core processor.
Kita bisa tentukan berapa banyak core yang aktif, makin banyak akan makin cepat.
Dalam komunikasinya, sebuah channel difungsikan sebagai pengirim di sebuah goroutine, dan juga sebagai penerima di goroutine lainnya.
Pengiriman dan penerimaan data pada channel bersifat blocking atau synchronous.