So definieren Sie in Golang mehrere Typen als einen Typ

WBOY
Freigeben: 2024-02-09 10:03:19
nach vorne
601 Leute haben es durchsucht

So definieren Sie in Golang mehrere Typen als einen Typ

In Golang müssen wir manchmal mehrere Typen als einen Typ definieren, um Daten flexibler verarbeiten zu können. Für dieses Problem bietet der PHP-Editor Xinyi für jeden eine Lösung. Durch die Verwendung von Schnittstellentypen können wir mehrere verschiedene Typen als einen Typ definieren. Ein Schnittstellentyp kann eine Reihe von Methoden definieren, ohne eine bestimmte Implementierung anzugeben. Auf diese Weise können wir diese Schnittstelle für mehrere Typen implementieren und diesen Schnittstellentyp dann für einheitliche Vorgänge und Verarbeitungen verwenden. Dieser Ansatz vereinfacht nicht nur die Codestruktur, sondern verbessert auch die Lesbarkeit und Wartbarkeit des Codes. Schauen wir uns als Nächstes die konkreten Umsetzungsschritte an!

Frageninhalt

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)
}
Nach dem Login kopieren

Der obige Code kann nicht kompiliert werden, da „args ...(string, error)“ nicht zulässig ist. Kann ich (String, Error) als Typ definieren? Oder einen besseren Weg? (Kann ich Strukturen verwenden?) wie : Typ reasonanderror(String, Error)

Workaround

Kann ich (String, Error) als Typ definieren?

Nein, diese Syntax wird nicht verwendet. go hat keine Tupel.

(Können Sie eine Struktur verwenden?) Zum Beispiel: Geben Sie reasonanderror (string, error) ein

Ja, deklarieren Sie einen Strukturtyp und verwenden Sie ihn. Die Syntax zum Deklarieren eines Strukturtyps lautet wie folgt:

type reasonanderror struct {
    reason string
    err    error
}
Nach dem Login kopieren

Um es dann zu verwenden, gehen Sie wie folgt vor:

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)
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonSo definieren Sie in Golang mehrere Typen als einen Typ. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!