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
Lepaskan: 2024-02-09 10:03:19
ke hadapan
644 orang telah melayarinya

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)
}
Salin selepas log masuk

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
}
Salin selepas log masuk

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)
}
Salin selepas log masuk

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!

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan