Comment imprimer les champs de structure par ordre alphabétique
Dans Go, les champs d'une structure sont classés au fur et à mesure de leur définition. Par conséquent, si vous souhaitez obtenir une sortie d'une structure triée par noms de champs, la solution la plus simple est de trier les champs par ordre alphabétique dans la déclaration du type de structure.
Par exemple :
type T struct { A int B int }
Cependant, si vous ne pouvez pas modifier l'ordre des champs en raison de considérations de disposition de la mémoire, vous disposez d'autres options :
1. Implémentez l'interface Stringer
En implémentant la méthode String(), vous pouvez contrôler la sortie de votre structure :
func (t T) String() string { return fmt.Sprintf("{%d %d}", t.A, t.B) }
2. Utiliser Reflection
Reflection fournit un moyen flexible de parcourir les champs de structure et d'obtenir leurs valeurs :
func printFields(st interface{}) string { t := reflect.TypeOf(st) names := make([]string, t.NumField()) for i := range names { names[i] = t.Field(i).Name } sort.Strings(names) v := reflect.ValueOf(st) buf := &bytes.Buffer{} buf.WriteString("{") for i, name := range names { val := v.FieldByName(name) if !val.CanInterface() { continue } if i > 0 { buf.WriteString(" ") } fmt.Fprintf(buf, "%v", val.Interface()) } buf.WriteString("}") return buf.String() }
En appelant la fonction printFields(), vous pouvez obtenir la sortie triée de votre structure.
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!