Rumah pembangunan bahagian belakang Golang Bagaimana untuk menukar penunjuk golang kepada tatasusunan

Bagaimana untuk menukar penunjuk golang kepada tatasusunan

Apr 25, 2023 am 09:10 AM

Di Golang, penunjuk dan tatasusunan adalah konsep yang sangat penting dan boleh dikatakan sebagai bahagian teras ciri bahasa. Penunjuk membolehkan kita memanipulasi alamat memori pembolehubah dengan mudah, manakala tatasusunan digunakan untuk menyimpan satu set nilai jenis data yang sama. Artikel ini akan memperkenalkan cara menukar penuding kepada tatasusunan dan menerangkan mata pengetahuan yang berkaitan.

Pertama, kita perlu memahami konsep asas penunjuk dan tatasusunan.

Dalam Golang, penunjuk ialah pembolehubah yang nilainya menyimpan alamat memori pembolehubah lain. Anda boleh mendapatkan alamat pembolehubah dengan menambahkan tanda & sebelum nama pembolehubah, dan anda boleh mendapatkan nilai pembolehubah yang ditunjuk oleh penuding dengan menambahkan tanda * sebelum nama pembolehubah penunjuk. Berikut ialah contoh mudah:

package main

import "fmt"

func main() {
    var a int = 10   // 定义一个整型变量
    var b *int       // 定义一个整型指针变量

    b = &a           // 将变量a的地址赋值给指针变量b

    fmt.Printf("a的值为 %d\n", a )
    fmt.Printf("*b的值为 %d\n", *b )
    fmt.Printf("b的地址为 %x\n", b )
}
Salin selepas log masuk

Hasil berjalan:

a的值为 10
*b的值为 10
b的地址为 c000014058
Salin selepas log masuk

Dalam contoh di atas, kami menentukan pembolehubah integer a dan pembolehubah penunjuk integer b. Kemudian simpan alamat pembolehubah a dalam b. Dapatkan nilai pembolehubah yang ditunjuk oleh penunjuk melalui *b.

Tatasusunan ialah jenis data dengan panjang tetap dan jenis kandungan yang sama. Setiap elemen dalam tatasusunan disimpan bersebelahan dalam ingatan. Berikut ialah contoh takrif tatasusunan ringkas:

var a [5]int
Salin selepas log masuk

Dalam contoh di atas, tatasusunan integer a dengan panjang 5 ditakrifkan. Panjang tatasusunan ditetapkan dan oleh itu tidak boleh diubah pada masa jalan. Kita boleh menggunakan pengendali indeks [] untuk mengakses elemen tatasusunan, seperti a[0], a[1], dsb.

Seterusnya, kami akan membincangkan cara menukar penuding kepada tatasusunan.

Di Golang, penunjuk boleh dianggap sebagai sebahagian daripada tatasusunan. Jika kita mempunyai penunjuk ke tatasusunan, kita boleh menggunakan penuding untuk mengakses tatasusunan. Berikut ialah contoh mudah:

package main

import "fmt"

func main() {
    var arr [5]int = [5]int{1, 2, 3, 4, 5}   // 定义一个长度为5的整型数组
    var p *[5]int = &arr                   // 将数组的地址赋值给指针变量p
    fmt.Println((*p)[0])                    // 输出数组的第一个元素
}
Salin selepas log masuk

Dalam contoh di atas, kita mula-mula mentakrifkan arr tatasusunan integer dengan panjang 5 dan memberikannya nilai {1, 2, 3, 4, 5 }. Kemudian pembolehubah penunjuk p yang menunjuk kepada tatasusunan integer ditakrifkan, dan alamat arr diberikan kepada p. Akhir sekali, akses elemen pertama tatasusunan melalui *p.

Selain kaedah yang digunakan dalam contoh di atas, kita juga boleh menggunakan nama tatasusunan sebagai penunjuk. Sebagai contoh, apabila kita mentakrifkan tatasusunan a, a boleh digunakan sebagai penunjuk kepada elemen tatasusunan. Berikut ialah contoh mudah:

package main

import "fmt"

func main() {
    var a [5]int = [5]int{1, 2, 3, 4, 5}   // 定义一个长度为5的整型数组

    fmt.Println(a[0])                     // 输出数组的第一个元素

    var p *int                             // 定义一个整型指针变量p
    p = &a[0]                              // 将数组的第一个元素的地址赋值给指针变量p

    fmt.Println(*p)                        // 输出指针所指向的变量的值
}
Salin selepas log masuk

Dalam contoh di atas, kita mula-mula mentakrifkan tatasusunan integer a dengan panjang 5, dan kemudian mengeluarkan elemen pertama tatasusunan melalui a[0]. Kemudian pembolehubah penunjuk integer p ditakrifkan, dan alamat a[0] diberikan kepada p. Akhir sekali, nilai pembolehubah yang ditunjuk oleh penunjuk adalah output melalui *p.

Ringkasan

Artikel ini memperkenalkan konsep asas penunjuk dan tatasusunan serta menerangkan cara menukar penunjuk kepada tatasusunan. Penunjuk dan tatasusunan adalah konsep yang sangat penting dalam bahasa Golang, dan mata pengetahuan yang berkaitan mesti dikuasai.

Atas ialah kandungan terperinci Bagaimana untuk menukar penunjuk golang kepada tatasusunan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Tag artikel panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

GO Language Pack Import: Apakah perbezaan antara garis bawah dan tanpa garis bawah? GO Language Pack Import: Apakah perbezaan antara garis bawah dan tanpa garis bawah? Mar 03, 2025 pm 05:17 PM

GO Language Pack Import: Apakah perbezaan antara garis bawah dan tanpa garis bawah?

Bagaimana untuk melaksanakan pemindahan maklumat jangka pendek antara halaman dalam kerangka beego? Bagaimana untuk melaksanakan pemindahan maklumat jangka pendek antara halaman dalam kerangka beego? Mar 03, 2025 pm 05:22 PM

Bagaimana untuk melaksanakan pemindahan maklumat jangka pendek antara halaman dalam kerangka beego?

Bagaimana saya menulis objek dan stub untuk ujian di GO? Bagaimana saya menulis objek dan stub untuk ujian di GO? Mar 10, 2025 pm 05:38 PM

Bagaimana saya menulis objek dan stub untuk ujian di GO?

Bagaimana saya boleh menggunakan alat pengesanan untuk memahami aliran pelaksanaan aplikasi saya? Bagaimana saya boleh menggunakan alat pengesanan untuk memahami aliran pelaksanaan aplikasi saya? Mar 10, 2025 pm 05:36 PM

Bagaimana saya boleh menggunakan alat pengesanan untuk memahami aliran pelaksanaan aplikasi saya?

Bagaimana anda menulis ujian unit di GO? Bagaimana anda menulis ujian unit di GO? Mar 21, 2025 pm 06:34 PM

Bagaimana anda menulis ujian unit di GO?

Bagaimana cara menukar senarai hasil pertanyaan mysql ke dalam slice struktur tersuai dalam bahasa Go? Bagaimana cara menukar senarai hasil pertanyaan mysql ke dalam slice struktur tersuai dalam bahasa Go? Mar 03, 2025 pm 05:18 PM

Bagaimana cara menukar senarai hasil pertanyaan mysql ke dalam slice struktur tersuai dalam bahasa Go?

Bagaimana cara menulis fail dalam bahasa Go dengan mudah? Bagaimana cara menulis fail dalam bahasa Go dengan mudah? Mar 03, 2025 pm 05:15 PM

Bagaimana cara menulis fail dalam bahasa Go dengan mudah?

Bagaimana saya boleh menentukan kekangan jenis tersuai untuk generik di GO? Bagaimana saya boleh menentukan kekangan jenis tersuai untuk generik di GO? Mar 10, 2025 pm 03:20 PM

Bagaimana saya boleh menentukan kekangan jenis tersuai untuk generik di GO?

See all articles