Cara Mencetak Medan Struktur dalam Susunan Abjad
Dalam Go, medan struct disusun seperti yang ditakrifkan. Oleh itu, jika anda ingin mendapatkan output struct yang diisih mengikut nama medan, penyelesaian paling mudah ialah menyusun medan mengikut abjad dalam pengisytiharan jenis struct.
Contohnya:
type T struct { A int B int }
Walau bagaimanapun, jika anda tidak boleh mengubah suai susunan medan disebabkan pertimbangan susun atur memori, anda mempunyai pilihan:
1. Laksanakan Antara Muka Stringer
Dengan melaksanakan kaedah String(), anda boleh mengawal output struct anda:
func (t T) String() string { return fmt.Sprintf("{%d %d}", t.A, t.B) }
2. Gunakan Reflection
Reflection menyediakan cara yang fleksibel untuk lelaran ke atas medan struct dan mendapatkan nilainya:
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() }
Dengan menggunakan fungsi printFields(), anda boleh mendapatkan output yang diisih bagi struct anda.
Atas ialah kandungan terperinci Bagaimana untuk Mencetak Medan Go Struct dalam Susunan Abjad?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!