Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Belajar Golang dari awal: meneroka rahsia petunjuk

Belajar Golang dari awal: meneroka rahsia petunjuk

WBOY
WBOYasal
2024-02-28 18:33:04912semak imbas

从零开始学习 Golang:探索指针的奥秘

Belajar Golang dari Awal: Meneroka Misteri Penunjuk

Dalam proses pembelajaran bahasa pengaturcaraan, penunjuk adalah konsep yang sangat penting dan sering diabaikan. Dalam bahasa Go, penunjuk juga merupakan jenis data yang sangat berguna yang boleh mengurus memori, memindahkan data dan meningkatkan prestasi dan kecekapan program dengan berkesan. Artikel ini akan bermula dari awal dan meneroka misteri penunjuk dalam bahasa Go langkah demi langkah melalui contoh kod tertentu.

Apakah itu penunjuk

Dalam bahasa Go, penunjuk ialah jenis data yang menyimpan alamat memori pembolehubah. Melalui penunjuk, anda boleh terus beroperasi pada ruang memori di mana pembolehubah terletak dan bukannya beroperasi pada pembolehubah itu sendiri. Penunjuk menggunakan operator & untuk mendapatkan alamat pembolehubah, dan operator * digunakan untuk mengakses pembolehubah yang ditunjuk oleh penuding. & 操作符来获取变量的地址,通过 * 操作符来访问指针指向的变量。

创建指针变量

在 Go 语言中,可以使用 * 来声明一个指针变量,例如:

package main

import "fmt"

func main() {
    var num int = 10
    var ptr *int

    ptr = &num

    fmt.Println("num 的值是:", num)
    fmt.Println("ptr 的值是:", ptr)
    fmt.Println("ptr 指向的值是:", *ptr)
}

在上面的代码中,我们声明了一个整型变量 num 和一个整型指针变量 ptr,然后通过 & 操作符获取 num 变量的地址赋值给指针变量 ptr。最后通过 *ptr 访问指针指向的变量。

指针作为函数参数

在 Go 语言中,将指针作为函数的参数传递,可以直接对原变量进行修改,而不是对其拷贝进行修改。示例代码如下:

package main

import "fmt"

func changeValue(ptr *int) {
    *ptr = 20
}

func main() {
    var num int = 10
    fmt.Println("修改前的值是:", num)
    
    changeValue(&num)
    fmt.Println("修改后的值是:", num)
}

在上面的代码中,我们定义了一个 changeValue 函数,接受一个整型指针作为参数,通过指针修改原变量的值。在 main 函数中调用 changeValue 函数,可以直接修改 num 变量的值。

指针数组和指针的数组

指针数组是一个存储指针元素的数组,而指针的数组是一个指针,指向数组的第一个元素。代码示例如下:

package main

import "fmt"

func main() {
    var num1, num2, num3 int = 1, 2, 3
    var ptrArray [3]*int

    ptrArray[0] = &num1
    ptrArray[1] = &num2
    ptrArray[2] = &num3

    fmt.Println("num1: ", *ptrArray[0])
    fmt.Println("num2: ", *ptrArray[1])
    fmt.Println("num3: ", *ptrArray[2])
}

在上面的代码中,我们定义了三个整型变量和一个指针数组 ptrArray

Buat pembolehubah penunjuk

Dalam bahasa Go, anda boleh menggunakan * untuk mengisytiharkan pembolehubah penunjuk, contohnya: 🎜rrreee🎜Dalam kod di atas, kami mengisytiharkan pembolehubah integer num dan pembolehubah penuding integer <code>ptr, dan kemudian gunakan operator & untuk mendapatkan alamat pembolehubah num dan berikannya kepada pembolehubah penunjuk ptr. Akhir sekali, akses pembolehubah yang ditunjuk oleh penuding melalui *ptr. 🎜🎜Penunjuk sebagai parameter fungsi🎜🎜Dalam bahasa Go, menghantar penunjuk sebagai parameter fungsi boleh mengubah suai secara langsung pembolehubah asal dan bukannya mengubah suai salinannya. Kod sampel adalah seperti berikut: 🎜rrreee🎜Dalam kod di atas, kami mentakrifkan fungsi changeValue, yang menerima penunjuk integer sebagai parameter dan mengubah suai nilai pembolehubah asal melalui penuding. Memanggil fungsi changeValue dalam fungsi main boleh mengubah suai secara langsung nilai pembolehubah num. 🎜🎜 Tatasusunan penuding dan tatasusunan penuding🎜🎜 Tatasusunan penuding ialah tatasusunan yang menyimpan elemen penuding, manakala tatasusunan penuding ialah penuding yang menunjuk kepada elemen pertama tatasusunan. Contoh kod adalah seperti berikut: 🎜rrreee🎜Dalam kod di atas, kami mentakrifkan tiga pembolehubah integer dan tatasusunan penuding ptrArray, dan menyimpan alamat tiga pembolehubah ini ke dalam tatasusunan. Dengan merentasi tatasusunan penunjuk, nilai setiap pembolehubah boleh diperolehi. 🎜🎜Melalui contoh kod di atas, kami mempunyai pemahaman awal tentang konsep asas dan penggunaan penunjuk dalam bahasa Go. Walaupun penunjuk mempunyai beberapa konsep yang rumit, ia adalah alat yang sangat berguna dalam pengaturcaraan sebenar dan boleh meningkatkan kecekapan dan prestasi program. Saya berharap melalui pengenalan artikel ini, pembaca akan mempunyai pemahaman tentang petunjuk dan dapat menggunakan konsep penunjuk untuk pengaturcaraan bahasa Go dengan lebih baik. 🎜

Atas ialah kandungan terperinci Belajar Golang dari awal: meneroka rahsia petunjuk. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn