Pergi petunjuk bahasa


Penunjuk dalam bahasa Go mudah dipelajari dengan menggunakan penunjuk dalam bahasa Go boleh memudahkan untuk melaksanakan beberapa tugas.

Seterusnya mari belajar petunjuk bahasa Go langkah demi langkah.

Kita semua tahu bahawa pembolehubah ialah pemegang tempat yang mudah untuk merujuk alamat memori komputer.

Watak alamat dalam bahasa Go ialah & Apabila digunakan di hadapan pembolehubah, alamat memori pembolehubah yang sepadan akan dikembalikan.

Contoh berikut menunjukkan alamat pembolehubah dalam ingatan:

package main

import "fmt"

func main() {
   var a int = 10   

   fmt.Printf("变量的地址: %x\n", &a  )
}

Hasil output melaksanakan kod di atas ialah:

变量的地址: 20818a220

Sekarang kita telah memahami apa alamat memori adalah dan bagaimana untuk mengaksesnya. Seterusnya kami akan memperkenalkan petunjuk secara terperinci.


Apakah itu penunjuk

Pembolehubah penunjuk boleh menunjuk ke alamat memori sebarang nilai.

Sama seperti pembolehubah dan pemalar, anda perlu mengisytiharkan penunjuk sebelum menggunakannya. Format pengisytiharan penuding adalah seperti berikut:

var var_name *var-type

var-type ialah jenis penunjuk, var_name ialah nama pembolehubah penunjuk dan tanda * digunakan untuk menentukan bahawa pembolehubah digunakan sebagai penunjuk. Berikut ialah pengisytiharan penunjuk yang sah:

var ip *int        /* 指向整型*/
var fp *float32    /* 指向浮点型 */

Dalam kes ini, ini ialah penunjuk kepada int dan float32.


Cara menggunakan penunjuk

Proses penggunaan penunjuk:

  • Tentukan pembolehubah penunjuk.

  • Tetapkan nilai kepada pembolehubah penunjuk.

  • Akses nilai yang menunjuk ke alamat dalam pembolehubah penunjuk.

Tambah * (awalan) di hadapan jenis penunjuk untuk mendapatkan kandungan ditunjuk oleh penunjuk.

package main

import "fmt"

func main() {
   var a int= 20   /* 声明实际变量 */
   var ip *int        /* 声明指针变量 */

   ip = &a  /* 指针变量的存储地址 */

   fmt.Printf("a 变量的地址是: %x\n", &a  )

   /* 指针变量的存储地址 */
   fmt.Printf("ip 变量的存储地址: %x\n", ip )

   /* 使用指针访问值 */
   fmt.Printf("*ip 变量的值: %d\n", *ip )
}

Output pelaksanaan contoh di atas ialah:

a 变量的地址是: 20818a220
ip 变量的存储地址: 20818a220
*ip 变量的值: 20

Go null pointer

Apabila penunjuk ditakrifkan dan tidak diberikan kepada mana-mana pembolehubah, nilainya adalah tiada.

penunjuk nol juga dipanggil penunjuk nol.

nil secara konsepnya sama dengan null, None, nil, dan NULL dalam bahasa lain, dan semuanya merujuk kepada nilai sifar atau kosong.

Pembolehubah penunjuk biasanya disingkat ptr.

Lihat contoh berikut:

package main

import "fmt"

func main() {
   var  ptr *int

   fmt.Printf("ptr 的值为 : %x\n", ptr  )
}

Hasil keluaran contoh di atas ialah:

ptr 的值为 : 0

Pertimbangan penuding nol:

if(ptr != nil)     /* ptr 不是空指针 */
if(ptr == nil)    /* ptr 是空指针 */

Go pointer lebih banyak kandungan

Seterusnya kami akan memperkenalkan anda kepada lebih banyak aplikasi penunjuk dalam bahasa Go:

内容描述
Go 指针数组你可以定义一个指针数组来存储地址
Go 指向指针的指针Go 支持指向指针的指针
Go 像函数传递指针参数通过引用或地址传参,在函数调用时可以改变其值