Rumah >pembangunan bahagian belakang >Golang >Bagaimana Mencetak Alamat Struct dalam Go dengan Betul?

Bagaimana Mencetak Alamat Struct dalam Go dengan Betul?

DDD
DDDasal
2024-11-29 12:38:12222semak imbas

How to Correctly Print the Address of a Struct in Go?

Memahami Pencetakan Alamat Struktur dalam Go

Dalam Go, memahami konsep mencetak alamat pembolehubah struct adalah penting. Mari kita mendalami pertanyaan khusus dan penyelesaiannya.

Pertanyaan:

Seorang pengguna yang menemui Go buat kali pertama mahu mencetak alamat pembolehubah struct, r. Walaupun menggunakan jangkaan & pengendali, output menunjukkan {15 6} dan bukannya alamat yang dijangkakan.

Coretan Kod:

type Rect struct {
  width int
  name int
}

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

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

Analisis:

Secara lalai, fmt.Println() menggunakan format %v yang merawat struct khas dengan mencetak bidang mereka. Untuk mencetak alamat secara langsung, rentetan format tertentu diperlukan.

Penyelesaian:

Untuk mencetak alamat r, kata kerja %p mesti digunakan dengan format rentetan. Kata kerja ini secara khusus menunjukkan pencetakan nilai penunjuk.

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

Ini akan mengeluarkan alamat r dengan betul, seperti 0x414020.

Selain itu, alamat boleh disimpan dalam pembolehubah menggunakan sintaks berikut:

addr := &r

Kini, addr akan menahan penunjuk ke r.

Atas ialah kandungan terperinci Bagaimana Mencetak Alamat Struct dalam Go dengan Betul?. 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