Cara Menghasilkan Medan Struktur dalam Susunan Abjad
Struktur dalam Go memiliki medan tertib. Walau bagaimanapun, mencetak struct menggunakan pakej pemformatan (fmt) membentangkan medan dalam urutan bukan abjad. Artikel ini mendalami teknik untuk mengisih medan struct dalam susunan abjad.
Pratakrif Medan dalam Susunan Abjad
Pendekatan langsung adalah untuk mengisytiharkan struct dengan medan yang disusun dalam susunan abjad. Kaedah ini mudah dan memastikan susunan yang betul tanpa mengira pantulan atau pemformatan tersuai.
type T struct { A int B int }
Laksanakan Antara Muka Stringer
Dengan melaksanakan antara muka Stringer dengan String() kaedah, anda boleh menyesuaikan cara struct dipaparkan. Kaedah ini membolehkan anda menentukan susunan medan dalam output.
func (t T) String() string { return fmt.Sprintf("{%d %d}", t.A, t.B) }
Gunakan Refleksi
Reflection menawarkan penyelesaian komprehensif yang terpakai pada mana-mana struct tanpa mengira jenis atau definisi pakej. Ia melibatkan mendapatkan nama medan, mengisihnya dan kemudian mengakses nilai medan berdasarkan nama yang diisih.
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() }
Atas ialah kandungan terperinci Bagaimana Mengisih Medan Go Struct Mengikut Abjad Semasa Mencetak?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!