Rumah >pembangunan bahagian belakang >Golang >golang: tatasusunan json yang juga mempunyai kaedah

golang: tatasusunan json yang juga mempunyai kaedah

WBOY
WBOYke hadapan
2024-02-09 10:15:181264semak imbas

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"`
  }
)

Saya juga berharap parent ada caranya:

func (p *parent) example() { }

Tetapi keperluan json ialah induk hanyalah array:

[
  {
    "field": "data"
  }
]

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() { /* ... */ }
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)
}
🎜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!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam