Mi sembra che questo dovrebbe essere un problema minore, ma ho provato ogni schema che mi viene in mente, e non ho avuto fortuna. Ho una struttura che deve essere codificata da entrambi i pacchetti encoding/json
e github.com/zeebo/bencode
. Capita di includere un canale, che non può essere codificato da entrambi i pacchetti. Pertanto, deve portare il tag "-"
, in modo che quel campo venga saltato.Più tag sullo stesso elemento struct Go
type Index struct {
Data data
Queue chan string `json:"-"`
}
Questo è valido quando codificata dal pacchetto json
, ma non con il pacchetto bencode
.
type Index struct {
Data data
Queue chan string `bencode:"-"`
}
Questo blocco, ovviamente, ha il problema gratuito. Ho provato le sintassi dei tag come json:"-",bencode:"-"
, *:"-"
, "-"
, -
. C'è una soluzione?
Grazie a tutti.
Quella era l'unica cosa che non ho provato! Grazie mille. –
Da http://golang.org/pkg/reflect/#StructTag: Per convenzione, le stringhe di tag sono una concatenazione di chiavi opzionalmente separate da spazio: coppie "valore". Ogni chiave è una stringa non vuota composta da caratteri non di controllo diversi dallo spazio (U + 0020 ''), citazione (U + 0022 '"') e due punti (U + 003A ':'). Ogni valore è quotato usando U + 0022 caratteri "" "e sintassi Go letterale stringa. –
In altre parole, lo spazio è facoltativo, ma nessun altro separatore funziona. –