Apa Itu Pointer?
Operator alamat, dereferensi, dan pointer nil
Apa Itu Pointer? adalah pelajaran Go Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Go Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Go Academy mencakup 4 pelajaran total.
Alamat Memori
Setiap variabel berada di alamat memori. Penunjuk menyimpan alamat tersebut. Dalam Go, penunjuk memiliki tipe: *int menyimpan alamat sebuah int.
Operator Pengambil Alamat &
Gunakan & untuk mendapatkan alamat variabel:
package main
import "fmt"
func main() {
x := 42
p := &x
fmt.Println(p) // 0xc000... (address)
fmt.Println(*p) // 42 (value at address)
}Dereferensi *
Gunakan * untuk membaca atau menulis nilai pada alamat penunjuk:
package main
import "fmt"
func main() {
n := 10
p := &n
*p = 99
fmt.Println(n) // 99
}Penunjuk nil
Nilai nol penunjuk adalah nil. Melakukan dereferensi pada penunjuk nil menyebabkan kepanikan:
package main
import "fmt"
func main() {
var p *int
fmt.Println(p) // <nil>
fmt.Println(p == nil) // true
// *p = 1 — PANIC
}Tipe Penunjuk
Setiap tipe penunjuk bergantung pada apa yang ditunjuknya:
package main
import "fmt"
func main() {
i := 1
s := "hello"
pi := &i // *int
ps := &s // *string
fmt.Printf("%T %T\n", pi, ps) // *int *string
}Pemeriksaan nil Sebelum Digunakan
Selalu periksa nil sebelum melakukan dereferensi terhadap penunjuk yang diterima dari luar kode Anda:
package main
import "fmt"
func printInt(p *int) {
if p == nil {
fmt.Println("nil pointer")
return
}
fmt.Println(*p)
}
func main() {
v := 7
printInt(&v)
printInt(nil)
}Penunjuk ke Struktur
Mengakses anggota struktur melalui penunjuk menggunakan notasi titik yang sama—Go melakukan dereferensi secara otomatis:
package main
import "fmt"
type Point struct{ X, Y int }
func main() {
p := &Point{1, 2}
p.X = 10 // same as (*p).X = 10
fmt.Println(*p) // {10 2}
}Perbandingan Penunjuk
Dua penunjuk sama jika menunjuk ke variabel yang sama, yaitu alamat yang sama, atau keduanya bernilai nil:
package main
import "fmt"
func main() {
a := 1
p1 := &a
p2 := &a
p3 := new(int)
*p3 = 1
fmt.Println(p1 == p2) // true — same address
fmt.Println(p1 == p3) // false — different address
}Tumpukan dan Timbunan
Kompiler Go menentukan apakah suatu variabel berada di tumpukan atau timbunan melalui analisis pelolosan. Saat Anda mengambil alamat variabel lokal dan mengembalikannya, Go otomatis memindahkannya ke timbunan—Anda tidak perlu mengelolanya secara manual.
Kapan NOT Menggunakan Penunjuk
Tidak semua hal memerlukan penunjuk:
- Tipe nilai kecil, seperti bilangan bulat, boolean, dan struktur kecil, lebih murah disalin daripada dilakukan dereferensi
- Data tidak dapat diubah yang dibagikan antar-goroutine aman digunakan sebagai nilai
- Gunakan penunjuk terutama untuk perubahan atau struktur besar
Pemeriksaan Singkat
Apa yang dikembalikan operator &?
Ringkasan: Penunjuk
Hal-hal penting:
&vmendapatkan alamat;*pmelakukan dereferensi- Nilai nol adalah nil—selalu periksa sebelum melakukan dereferensi
- Go melakukan dereferensi otomatis saat mengakses anggota struktur melalui penunjuk
- Analisis pelolosan mengelola tumpukan dan timbunan secara otomatis
Latihan
Tulis fungsi swap(a, b *int) yang menukar nilai dua bilangan bulat menggunakan penunjuk. Panggil dari main dan cetak nilai sebelum serta sesudahnya.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Apa Itu Pointer?” gratis?
Ya — teks lengkap “Apa Itu Pointer?” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Go Academy, upgrade ke CoddyKit PRO. Kursus Go Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Apa Itu Pointer?”?
Operator alamat, dereferensi, dan pointer nil Kamu berlatih Go Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Go Academy?
Tidak diperlukan pengalaman sebelumnya. Go Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “Apa Itu Pointer?” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Go Academy ini?
Ya. Setiap pelajaran Go Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.