Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Menyesuaikan Output Cetakan Go untuk Structs dengan Penunjuk?

Bagaimana untuk Menyesuaikan Output Cetakan Go untuk Structs dengan Penunjuk?

Mary-Kate Olsen
Lepaskan: 2024-12-12 16:02:12
asal
852 orang telah melayarinya

How to Customize Go's Print Output for Structs with Pointers?

Menyesuaikan Output Cetakan Struktur dengan Penunjuk

Apabila mencetak struct dengan penunjuk dalam Go, menggunakan penentu format %v lalai mungkin tidak menyediakan hasil yang diingini. Ini kerana ia mencetak alamat penuding dan bukannya kandungan struct yang dirujuk.

Untuk menangani perkara ini, terdapat dua pendekatan utama: tentukan kaedah Rentetan tersuai untuk jenis struct atau format output secara manual.

Mentakrifkan Kaedah Rentetan Tersuai

Kaedah pilihan adalah untuk melaksanakan antara muka Stringer untuk jenis struktur yang terlibat. Ini boleh dilakukan dengan menambah kaedah rentetan String() pada struct. Rentetan format yang dihantar kepada fungsi printf akan memanggil kaedah ini sebaliknya.

Contohnya:

package main

import "fmt"

type A struct {
    a int32
    B *B
}

type B struct{ b int32 }

func (aa *A) String() string {
    return fmt.Sprintf("A{a:%d, B:%v}",aa.a,aa.B)
}

func (bb *B) String() string {
    return fmt.Sprintf("B{b:%d}",bb.b)
}

func main() {
    a := &A{a: 1, B: &B{b: 2}}
    fmt.Printf("v ==== %v \n", a) // Prints "v ==== A{a:1, B:B{b:2}}"
}
Salin selepas log masuk

Pemformatan Manual

Jika tiada kaedah String, anda boleh memformat output secara manual menggunakan penentu format ahli struct individu.

package main

import "fmt"

type A struct {
    a int32
    B *B
}

type B struct{ b int32 }

func main() {
    a := &A{a: 1, B: &B{b: 2}}
    fmt.Printf("v ==== A{a:%d, B:B{b:%d}}\n", a.a, a.B.b)
}
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Menyesuaikan Output Cetakan Go untuk Structs dengan Penunjuk?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan