Dalam golang, kadangkala kita perlu mentakrifkan berbilang jenis sebagai satu jenis untuk memproses data dengan lebih fleksibel. Untuk masalah ini, editor PHP Xinyi membawa penyelesaian kepada semua orang. Dengan menggunakan jenis antara muka, kita boleh mentakrifkan pelbagai jenis sebagai satu jenis. Jenis antara muka boleh menentukan set kaedah tanpa menyatakan pelaksanaan tertentu. Dengan cara ini, kami boleh melaksanakan antara muka ini untuk berbilang jenis, dan kemudian menggunakan jenis antara muka ini untuk operasi dan pemprosesan bersatu. Pendekatan ini bukan sahaja memudahkan struktur kod, tetapi juga meningkatkan kebolehbacaan dan kebolehselenggaraan kod. Seterusnya, mari kita lihat langkah pelaksanaan khusus!
func GetFailedReasonAndErr (xxx) (string, error){ ... } func AnyFailed (args ...(string, error)) { for _, arg := range args { if arg.error != nil { return arg } } } func main () { reason, err := AnyFailed(GetFailedReasonAndErr(yyy), GetFailedReasonAndErr(zzz)) println(reason, err) }
Kod di atas gagal dikompilasi kerana "args ...(string, error)" tidak dibenarkan. Bolehkah saya menentukan (String, Ralat) sebagai jenis? Atau cara yang lebih baik? (Bolehkah saya menggunakan struct?) seperti: Taip reasonanderror(String, Ralat)
Bolehkah saya mentakrifkan (String, Ralat) sebagai jenis?
Tidak, sintaks itu tidak digunakan. pergi tidak mempunyai tupel.
(Bolehkah anda menggunakan struktur?) Contohnya: taip reasonanderror (rentetan, ralat)
Ya, isytiharkan jenis struct dan gunakannya. Sintaks untuk mengisytiharkan jenis struktur adalah seperti berikut:
type reasonanderror struct { reason string err error }
Kemudian, untuk menggunakannya, anda lakukan perkara berikut:
func GetFailedReasonAndErr(xxx) reasonAndError { // ... } func AnyFailed(args ...reasonAndError) (string, error) { for _, arg := range args { if arg.err != nil { return arg.reason, arg.err } } return "", nil } func main () { reason, err := AnyFailed(GetFailedReasonAndErr(yyy), GetFailedReasonAndErr(zzz)) println(reason, err) }
Atas ialah kandungan terperinci Bagaimana untuk menentukan pelbagai jenis sebagai satu jenis dalam golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!