GO : Pointer
Bahasa pemrograman Go mendukung juga adanya pointer. Deklarasi dalam bahasa pemrograman Go adalah sama dengan bahasa pemrograman C, tetapi ditulis dengan cara yang berbeda, yang diakhiri dengan type. Tidak seperti bahasa pemrograman C, Go memiliki pengumpulan sampah, dan melarang aritmetik pointer. Tipe referensi, seperti C++ itu tidak ada dalam Go. Beberapa jenis built-in, seperti maps dan channel, telah dikemas dan diinisialisasikan menggunakan fungsi make.
Pointer memperbolehkan untuk melewati referensi ke nilai-nilai dan catatan dalam sebuah program.
Contoh dasar pointer.
package main
import "fmt"
//fungsi zeroval dan zeroptr. zeroval memiliki parameter int, sehingga argumen akan
diteruskan kepadanya oleh nilai. zeroval akan mendapatkan salinan
iVal yang berbeda dari satu fungsi panggilan.
func zeroval(ival int) {
ival = 0
}
//fungsi zeroptr memiliki parameter *int, maka membutuhkan int pointer. code *iptr di dalam
fungsi kemudian dereferences pointer dari alamat memori dengan nilai
saat ini di alamat itu. Menetapkan nilai pada pointer dapat
dereferenced mengubah nilai pada alamat direferensikan.
func zeroptr(iptr *int) {
*iptr = 0
}
func main() {
i := 1
fmt.Println("initial:", i)
zeroval(i)
fmt.Println("zeroval:", i)
//&i memberikan alamat memori dari i.
zeroptr(&i)
fmt.Println("zeroptr:", i)
fmt.Println("pointer:", &i)
}
Output
initial: 1
zeroval: 1 //zeorvaltidak mengubah nilai i yang utama
zeroptr: 0 //zeroptr berubah karena memiliki referensi ke alamat memori untuk variabel tersebut
pointer: 0x42131100
Source
Comments
Post a Comment