L'éditeur PHP Youzi vous propose un article sur Golang, le sujet est "golang : des tableaux json qui ont aussi des méthodes". Golang est un langage de programmation simple et efficace, et le tableau json est l'un des formats de données couramment utilisés. Cet article explorera comment opérer sur les tableaux json dans Golang et présentera quelques méthodes utiles. Que vous soyez débutant ou développeur expérimenté, cet article peut vous fournir de précieuses informations et conseils. Découvrons-le ensemble !
J'ai une structure de données comme celle-ci :
type ( parent struct { items []*child } child struct { field string `json:"field"` } )
J'espère aussi parent
qu'il existe un moyen :
func (p *parent) example() { }
Mais l'exigence de json est que le parent soit juste un tableau :
[ { "field": "data" } ]
Je veux que parent
是一个简单的数组,但为了让 parent
soit un simple tableau, mais pour que
Existe-t-il un moyen de résoudre ces deux problèmes avec une seule structure de données ?
greatgrandparent
包含[]grandparent
,而grandparent
有一个包含parent
的parent
(Pour compliquer les choses, la structure de données réelle que je dois utiliser comporte deux niveaux : arrière-grand-parent
contient []grand-parent
et grand-parent
. est un
Solution de contournement
Pour que le parent ait des méthodes, il ne peut pas être de type Array. C'est possible, il doit juste avoir un
nom, puisque seuls les types nommés (ou les pointeurs vers des types nommés) peuvent implémenter des méthodes. Voici le code go valide :
type parent []*child
func (p parent) example() { /* ... */ }
parent
Notez que ce qui précède
json.unmarshaler
/json.marshaler
:
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) }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!