Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Mengakses dan Menyimpan Alamat Memori bagi Go Struct?

Bagaimanakah Saya Mengakses dan Menyimpan Alamat Memori bagi Go Struct?

Barbara Streisand
Barbara Streisandasal
2024-11-29 13:37:25450semak imbas

How Do I Access and Store the Memory Address of a Go Struct?

Mengakses dan Menyimpan Alamat Memori Struktur Go

Memahami tingkah laku alamat memori dan penunjuk adalah penting dalam pengaturcaraan, terutamanya dengan struktur data yang kompleks seperti struct Go. Artikel ini menyelidiki nuansa pencetakan dan memanipulasi alamat struct.

Pertimbangkan program Go berikut:

type Rect struct {
 width int
 name int 
}

func main() {
 r := Rect{4,6}
 p := &r
 p.width = 15

fmt.Println("-----",&p,r,p,&r)
}

Apabila menjalankan program ini, anda mungkin melihat output dengan format _____0x40c130 {15 6} &{15 6} &{15 6}. Walaupun output ini memberikan beberapa cerapan tentang lokasi memori, ia tidak memaparkan alamat pembolehubah r secara eksplisit.

Untuk mencetak alamat r secara langsung, kita perlu memintas pemformatan lalai yang digunakan oleh fmt.Println( ). Sebaliknya, kita boleh menentukan rentetan format untuk mengawal output. Kata kerja %p digunakan untuk mencetak penunjuk dan alamat. Mengubah suai baris fmt.Println() seperti berikut akan mencetak alamat r:

fmt.Printf("%p\n", &r)

Ini akan mengeluarkan alamat r dalam format heksadesimal, seperti 0x414020.

Selain itu, jika anda ingin menyimpan alamat r dalam pembolehubah, anda boleh menggunakan yang berikut sintaks:

addr := &r

Ini akan memberikan alamat memori r kepada pemboleh ubah addr. Anda kemudiannya boleh menggunakan addr untuk mengakses atau mengubah suai nilai yang terkandung dalam struktur Rect secara tidak langsung.

Ingat, apabila menggunakan penunjuk dan alamat, adalah penting untuk mempertimbangkan konteks dan tujuan untuk memahami penggunaannya sepenuhnya.

Atas ialah kandungan terperinci Bagaimanakah Saya Mengakses dan Menyimpan Alamat Memori bagi Go Struct?. 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