golang: tatasusunan json yang juga mempunyai kaedah

WBOY
Lepaskan: 2024-02-09 10:15:18
ke hadapan
1224 orang telah melayarinya

golang:也有方法的 json 数组

PHP editor Youzi membawakan anda artikel tentang Golang, topiknya ialah "golang: tatasusunan json yang juga mempunyai kaedah". Golang ialah bahasa pengaturcaraan yang mudah dan cekap, dan tatasusunan json ialah salah satu daripada format data yang biasa digunakan. Artikel ini akan meneroka cara mengendalikan tatasusunan json di Golang dan memperkenalkan beberapa kaedah yang berguna. Sama ada anda seorang pemula atau pembangun berpengalaman, artikel ini boleh memberi anda beberapa maklumat dan petua yang berharga. Mari kita ketahui bersama!

Kandungan soalan

Saya mempunyai struktur data seperti ini:

type (
  parent struct {
    items []*child
  }
  child struct {
    field string `json:"field"`
  }
)
Salin selepas log masuk

Saya juga berharap parent ada caranya:

func (p *parent) example() { }
Salin selepas log masuk

Tetapi keperluan json ialah induk hanyalah array:

[
  {
    "field": "data"
  }
]
Salin selepas log masuk

Saya mahu parent 是一个简单的数组,但为了让 parent menjadi tatasusunan mudah, tetapi untuk

mempunyai kaedah, ia tidak boleh daripada jenis tatasusunan.

Adakah cara untuk menyelesaikan dua masalah ini dengan satu struktur data?

greatgrandparent包含[]grandparent,而grandparent有一个包含parentparent(Untuk menjadikan perkara lebih rumit, struktur data sebenar yang saya perlu gunakan mempunyai dua peringkat: grandparent mengandungi []grandparent dan grandparent Di sana ialah

mengandungi

Tatasusunan ditakrifkan secara luaran dan saya mahu setiap satu daripada empat struct mempunyai kaedah )

Penyelesaian

Untuk induk mempunyai kaedah, ia tidak boleh menjadi jenis Tatasusunan. Ia boleh, ia hanya perlu mempunyai

nama

, kerana hanya jenis bernama (atau penunjuk kepada jenis bernama) boleh melaksanakan kaedah. Berikut ialah kod go yang sah:

type parent []*child

func (p parent) example() { /* ... */ }
Salin selepas log masuk
parentPerhatikan bahawa

di atas adalah kepingan dan bukan tatasusunan. Tatasusunan dalam pergi mempunyai panjang statik, anda tidak boleh menambahnya dan anda tidak boleh mengecilkannya, kepingan sebaliknya mempunyai panjang dinamik, anda boleh mengubah saiznya sesuka hati. Tatasusunan dan hirisan berkait rapat, tetapi tidak sama.

json.unmarshaler/json.marshaler

Cara lain ialah dengan meminta jenis struct melaksanakan antara muka

:

type parent struct { Items []*child }

func (p *parent) UnmarshalJSON(data []byte) error {
    return json.Unmarshal(data, &p.Items)
}

func (p parent) MarshalJSON() ([]byte, error) {
    return json.Marshal(p.Items)
}
Salin selepas log masuk
🎜Di atas akan menghasilkan struktur json yang diperlukan. 🎜

Atas ialah kandungan terperinci golang: tatasusunan json yang juga mempunyai kaedah. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:stackoverflow.com
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!