Können verschachtelte Klassen innerhalb von Funktionen in Golang existieren?

Patricia Arquette
Freigeben: 2024-11-04 14:56:02
Original
418 Leute haben es durchsucht

Can Nested Classes Exist Within Functions in Golang?

Können verschachtelte Klassen innerhalb von Funktionen in Golang existieren?

Golang erlaubt die Verschachtelung von Strukturen innerhalb von Funktionen, jedoch nicht von Funktionen innerhalb anderer Funktionen (ausgenommen Lambda-Funktionen). Diese Einschränkung wirft die Frage auf, ob es möglich ist, verschachtelte Klassen innerhalb von Funktionen in Golang zu definieren.

Betrachten Sie das folgende Beispiel:

<code class="go">func f() {
    // Nested struct Cls within f
    type Cls struct {
        // ...
    }

    // Attempt to bind foo to Cls fails
    func (c *Cls) foo() {
        // ...
    }
}</code>
Nach dem Login kopieren

In diesem Fall der Versuch, die foo-Funktion an zu binden Die verschachtelte Klasse Cls schlägt fehl. Dies mag überraschend erscheinen, wenn man bedenkt, dass Klassen nicht innerhalb von Funktionen reduziert werden.

Funktionsliterale zur Rettung

Obwohl das Verschachteln von Funktionen innerhalb anderer Funktionen in Golang dort nicht erlaubt ist ist eine Problemumgehung mithilfe von Funktionsliteralen:

<code class="go">func f() {
    foo := func(s string) {
        fmt.Println(s)
    }

    foo("Hello World!")
}</code>
Nach dem Login kopieren

Hier erstellen wir eine Variable foo vom Typ Funktion, die in einer anderen Funktion f deklariert wird. Der Aufruf der „äußeren“ Funktion f gibt Folgendes aus: „Hello World!“ wie erwartet.

Diese Lösung ermöglicht es uns, ein ähnliches Verhalten wie verschachtelte Klassen innerhalb von Funktionen zu erreichen, allerdings unter Verwendung eines anderen Mechanismus.

Das obige ist der detaillierte Inhalt vonKönnen verschachtelte Klassen innerhalb von Funktionen in Golang existieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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
Neueste Artikel des Autors
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!