package main
import (
"fmt"
)
func main() {
/**
* Pointer pada type data menunjukan bahwasannya variable bukan berisi value tapi address.
* Biasanya dipake kalo memakan deklarative tipe data seperti memakai var atau di struct
**/
test := "halo"
var coba *string = &test
//jika memakai non var
coba2 := &test
fmt.Println("Alamat dari test =", &test)
fmt.Println("Alamat dari coba =", coba)
fmt.Println("Alamat dari coba2 =", coba2)
fmt.Println("========")
type mahasiswa struct{
nama string
umur uint
alamat *string
}
/**
* Alasan kenapa alamat memakain pointer tipe data adalah value yg akan dipassing
* Berasan dari value variable atau struct lain
**/
alamatBudi := "Jl Pegangsaan Timur no.24"
budi := mahasiswa{
nama: "budi",
umur: 21,
alamat: &alamatBudi,
}
/**
* Hasil println, tidak akan menampilkan value alamat melainkan memory address
**/
fmt.Println("Mahasiswa =", budi)
fmt.Println("Alamat Mahasiswa =", *budi.alamat)
}