Pointers di Go adalah sejenis pembolehubah yang menyimpan alamat memori pembolehubah lain. Mereka digunakan untuk secara tidak langsung mengakses dan memanipulasi nilai pembolehubah yang mereka tunjuk. Manipulasi tidak langsung ini membolehkan pengurusan ingatan yang cekap dan boleh digunakan untuk mencapai tingkah laku seperti lulus-demi-rujukan dalam panggilan fungsi, yang tidak disokong secara langsung dalam sintaks Go.
Untuk menggunakan petunjuk di GO, anda perlu memahami dua pengendali utama: pengendali alamat &
dan pengendali dereference *
. Pengendali alamat digunakan untuk mendapatkan alamat memori pembolehubah, dan pengendali dereference digunakan untuk mengakses nilai yang disimpan di alamat yang dipegang oleh penunjuk.
Berikut adalah contoh mudah bagaimana menggunakan petunjuk di Go:
<code class="go">package main import "fmt" func main() { // Declare an integer variable a := 10 // Declare a pointer to an integer and assign it the address of 'a' var b *int = &a // Dereference the pointer to change the value of 'a' *b = 20 fmt.Println("Value of a:", a) // Output: Value of a: 20 }</code>
Dalam contoh ini, b
adalah penunjuk kepada integer, dan ia dimulakan dengan alamat a
. Dengan dereferencing b
dan memberikan nilai baru, nilai a
ditukar secara tidak langsung.
Menggunakan penunjuk dalam pengaturcaraan GO menawarkan beberapa faedah:
Di mana sahaja, anda boleh mengisytiharkan dan memulakan penunjuk dalam beberapa cara:
Pengisytiharan dan permulaan langsung :
Anda boleh mengisytiharkan penunjuk dan memulakannya dengan alamat pembolehubah menggunakan pengendali alamat &
.
<code class="go">var a int = 10 var b *int = &a</code>
Pengisytiharan Variabel Pendek :
Anda boleh menggunakan sintaks Deklarasi Pembolehubah pendek untuk mengisytiharkan dan memulakan penunjuk.
<code class="go">a := 10 b := &a</code>
Inisialisasi nilai sifar :
Jika anda mengisytiharkan penunjuk tanpa memulakannya, ia akan mempunyai nilai sifar nil
.
<code class="go">var b *int // b is nil</code>
Menggunakan fungsi new
:
Fungsi new
memperuntukkan memori untuk pembolehubah dan mengembalikan alamatnya, yang boleh digunakan untuk memulakan penunjuk.
<code class="go">b := new(int) // b is a pointer to an int, and *b is 0</code>
Semasa bekerja dengan petunjuk di GO, penting untuk mengelakkan beberapa kesilapan biasa untuk mencegah pepijat dan tingkah laku yang tidak dijangka:
Dereferencing penunjuk nil
:
Percubaan untuk membantah penunjuk nil
akan menyebabkan panik runtime. Sentiasa periksa sama ada penunjuk nil
sebelum dereferencing.
<code class="go">var p *int if p != nil { *p = 10 // This will panic if p is nil }</code>
&
dan pengendali dereference *
. Sentiasa semak semula penggunaan pengendali ini untuk memastikan anda bekerja dengan nilai yang betul.Dengan menyedari kesilapan -kesilapan yang sama dan mengikuti amalan terbaik, anda boleh menggunakan petunjuk dengan berkesan dan selamat dalam program Go anda.
Atas ialah kandungan terperinci Apakah petunjuk di GO? Bagaimana anda menggunakannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!