Fahami kelebihan dan kegunaan penunjuk Golang dan tingkatkan pengetahuan anda

PHPz
Lepaskan: 2024-01-24 09:52:06
asal
848 orang telah melayarinya

Fahami kelebihan dan kegunaan penunjuk Golang dan tingkatkan pengetahuan anda

Kelebihan dan kegunaan penunjuk Golang, supaya anda lebih memahami, contoh kod khusus diperlukan

Dalam bahasa Go, penunjuk ialah jenis data khas yang menyimpan alamat memori pembolehubah. Dengan menggunakan penunjuk, kita boleh mengendalikan memori secara langsung di mana pembolehubah berada, dan kemudian merujuk dan mengubah suai pembolehubah. Berbanding dengan bahasa pengaturcaraan lain, penunjuk bahasa Go mempunyai beberapa kelebihan dan kegunaan unik. Artikel ini akan menggunakan contoh kod khusus untuk membantu kami memahami dengan lebih baik kelebihan dan penggunaan penunjuk dalam bahasa Go.

  1. Melalui objek besar mempunyai lebih sedikit overhed

Dalam lulus parameter fungsi atau kaedah, jika objek besar dilalui terus, ia akan menyebabkan overhed menyalin keseluruhan objek, terutamanya dalam panggilan rekursif atau gelung. Apabila menghantar penunjuk sebagai parameter, anda hanya perlu menghantar alamat memori, mengelakkan overhed penyalinan objek. Dalam contoh kod berikut, kami mentakrifkan jenis struktur Orang, yang mengandungi dua medan: nama dan umur. Kami mentakrifkan fungsi modifyByPointer, menggunakan penunjuk sebagai parameter untuk mengubah suai objek Orang yang diluluskan.

package main

import "fmt"

type Person struct {
    name string
    age  int
}

func modifyByPointer(p *Person) {
    p.name = "Alice"
    p.age = 30
}

func main() {
    p := Person{"Bob", 25}

    modifyByPointer(&p)

    fmt.Println(p)
}
Salin selepas log masuk

Hasil larian ialah:

{Alice 30}
Salin selepas log masuk

Anda boleh melihat bahawa fungsi modifyByPointer mengubah suai objek Orang yang dilalui melalui penuding, tanpa menyalin keseluruhan objek, dengan itu mengelakkan operasi penyalinan objek yang mahal.

  1. Peruntukan memori dinamik

Dalam bahasa Go, gunakan kata kunci baharu untuk memperuntukkan ruang memori secara dinamik untuk jenis dan mengembalikan penunjuk jenis. Dalam contoh kod berikut, kami menggunakan new untuk memperuntukkan memori secara dinamik bagi pembolehubah integer dan menetapkannya kepada penunjuk p. new可以动态地为类型分配一片内存空间,并返回该类型的指针。接下来的代码示例中,我们使用new来动态分配一个整型变量的内存,并将其赋值给指针p。

package main

import "fmt"

func main() {
    p := new(int)
    *p = 10

    fmt.Println(*p)
}
Salin selepas log masuk

运行结果是:

10
Salin selepas log masuk

可以看到,通过使用new

package main

import "fmt"

func swap(a *int, b *int) {
    tmp := *a
    *a = *b
    *b = tmp
}

func main() {
    x, y := 10, 20

    swap(&x, &y)

    fmt.Println(x, y)
}
Salin selepas log masuk

Hasil yang sedang dijalankan ialah:
    20 10
    Salin selepas log masuk
  1. Anda boleh melihat bahawa dengan menggunakan kata kunci new, kami memperuntukkan memori secara dinamik untuk pembolehubah integer dan mengakses serta mengubah suai ruang memori melalui nilai p penunjuk.
  2. Fungsi mengembalikan berbilang hasil

    Dalam bahasa Go, fungsi boleh mengembalikan berbilang hasil. Penunjuk sangat berguna apabila fungsi kembali Anda boleh mengubah suai nilai pembolehubah luaran melalui penunjuk di dalam fungsi, dengan itu mencapai berbilang hasil pulangan. Dalam contoh kod berikut, kami mentakrifkan pertukaran fungsi untuk mengubah suai dua pembolehubah integer yang dihantar melalui penunjuk.

    rrreee

    Hasil larian ialah:

    rrreee

    Seperti yang anda lihat, dengan menggunakan penunjuk di dalam fungsi, kami berjaya menukar nilai x dan y. 🎜🎜Ringkasnya, penunjuk dalam bahasa Go mempunyai kelebihan dan kegunaan memindahkan objek besar dengan overhed yang kurang, memperuntukkan memori secara dinamik dan fungsi mengembalikan berbilang hasil. Dengan menggunakan penunjuk dengan betul, kami boleh mengurus memori dengan lebih baik dan meningkatkan prestasi dan kecekapan program. Saya harap contoh kod di atas dapat membantu semua orang memahami dan menggunakan petunjuk dengan lebih baik dalam bahasa Go. 🎜

    Atas ialah kandungan terperinci Fahami kelebihan dan kegunaan penunjuk Golang dan tingkatkan pengetahuan anda. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!