assignment, initialize, allocation and declaration - RealYukiSan/explore-go GitHub Wiki

Programming Fundamental

Page ini saya buat karena saya merasa perlu untuk menekankan perbedaan antara hal-hal tersebut guna memahami dengan benar bagaimana alur dari sebuah program di eksekusi, dan seperti apa behaviournya.

Allocation

alokasi merupakan teknik memberi alamat memory pada suatu variabel, di golang alokasi dapat dilakukan dengan keyword make dan new jika anda mendapatkan error seperti panic: runtime error: invalid memory address or nil pointer dereference kemungkinan besar penyebabnya adalah karena variabel tersebut bersifat pointer dan berisi alamat memori lalu anda mencoba mengambil nilai dari alamat memory tersebut (mendereference) yang sebenarnya belum di alokasikan ke sebuah memory.

Initialize

initialize merupakan sebuah teknik memberi default value pada saat variabel tersebut di alokasikan, dan biasanya dilambangkan dengan operator = jika tidak ada value yang di beri pada saat initialize variabel, biasanya bahasa pemrograman akan memberikan default value. Setiap bahasa pemrograman memiliki konvensinya masing masing, tergantung pada apa bahasa pemrograman yang kamu pakai. dan sekedar info, untuk di golang default value untuk sebuah pointer itu nil tunggu tunggu tunggu! apa itu pointer? pointer merupakan sebuah tipe data yang berisi reference address ke sebuah variabel pada memory. karena setiap variabel itu disimpan (dialokasikan) ke sebuah memori maka dibuatlah tipe data pointer yang dapat menyimpan alamat dari sebuah variabel. jika kamu masih bingung dengan pointer dan mengapa pointer di sebut sebagai tipe data, lihat contoh code berikut:

var str *string

pada contoh di atas, khususnya pada bagian *string merupakan tipe data pointer ke tipe data string. Istilah umum yang digunakan adalah "string pointer" atau "pointer to string".

Assignment

secara umum istilah assignment seringkali merujuk pada memasukkan nilai pada variabel yang sudah ada (digunakan untuk mengisi ulang nilai yang telah di initialize)

Declaration statement

dalam bahasa pemrograman, Declaration statement merupakan sebuah pernyataan untuk melakukan sesuatu, seperti membuat variabel, dll pernyataan deklarasi pada sebuah variabel di golang dapat memiliki cara yang bervariasi

// 1. allocated with default value empty string = ""
var str string
// 2. allocated & initialize
var str string = "hi mom"
// 3. untyped, tipe data yang belum fix
const str = "well..."
// 4. inferred type, detect type from value
var str = "well to..."
// 4. short variable declaration, adalah sebuah shorthand to declare a variable, automatically initialize/assign value, and tipe datanya diambil dari tipe data pada value tersebut.
str := "hi mom"

reference: