Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk menentukan pelbagai jenis sebagai satu jenis dalam golang

Bagaimana untuk menentukan pelbagai jenis sebagai satu jenis dalam golang

WBOY
WBOYke hadapan
2024-02-09 10:03:19645semak imbas

Bagaimana untuk menentukan pelbagai jenis sebagai satu jenis dalam golang

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!

Isi soalan

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)

Penyelesaian

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!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam