構造体のフィールドをアルファベット順に出力する方法
Go では、構造体のフィールドは定義どおりに並べられます。したがって、フィールド名でソートされた構造体の出力を取得したい場合、最も簡単な解決策は、構造体の型宣言でフィールドをアルファベット順に配置することです。
例:
type T struct { A int B int }
ただし、メモリ レイアウトを考慮してフィールドの順序を変更できない場合は、他のオプションがあります。
1. Stringer インターフェイスの実装
String() メソッドを実装すると、構造体の出力を制御できます:
func (t T) String() string { return fmt.Sprintf("{%d %d}", t.A, t.B) }
2.リフレクションを使用する
リフレクションは、構造体フィールドを反復処理してその値を取得するための柔軟な方法を提供します。
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() }
printFields() 関数を呼び出すと、次のソートされた出力を取得できます。あなたの構造体。
以上がGo 構造体のフィールドをアルファベット順に印刷するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。