Heim > Backend-Entwicklung > Golang > Können verschachtelte Klassen innerhalb von Funktionen in Go existieren?

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

Mary-Kate Olsen
Freigeben: 2024-11-04 14:26:01
Original
365 Leute haben es durchsucht

Can Nested Classes Exist Within Functions in Go?

Verschachtelte Klassen innerhalb von Funktionen in Go: Möglichkeiten und Einschränkungen

In Go sind verschachtelte Strukturen innerhalb von Funktionen zulässig, es besteht jedoch die Möglichkeit, verschachtelte Klassen zu erstellen Funktionen (über Lambda-Funktionen hinaus) ist eingeschränkt. Dies wirft die Frage auf: Ist es wirklich nicht möglich, eine verschachtelte Klasse innerhalb einer Funktion zu definieren?

Betrachten Sie zur Veranschaulichung den folgenden Codeausschnitt:

<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 Beispiel der Versuch, dies zu tun Das Definieren einer Funktion foo als Mitglied der verschachtelten Struktur Cls schlägt fehl. Diese Einschränkung mag angesichts der Flexibilität, die verschachtelte Strukturen bieten, ungewöhnlich erscheinen.

Es ist jedoch wichtig zu beachten, dass das Verschachteln von Funktionen in Go grundsätzlich nicht zulässig ist, unabhängig davon, ob die Funktion einen Empfänger hat.

Um diese Einschränkung zu umgehen, stellt Go Funktionsliterale bereit, die die Deklaration von Funktionen innerhalb anderer Funktionen ermöglichen, wie unten gezeigt:

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

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

In diesem Beispiel erstellen wir innerhalb der äußeren Funktion f eine Funktionsvariable foo . Diese Variable speichert eine Funktion, die mit dem Argument „Hello World!“ aufgerufen werden kann. Wenn die äußere Funktion f aufgerufen wird, wird „Hello World!“ angezeigt. wird wie erwartet gedruckt.

Dieser Ansatz, der Funktionsliterale verwendet, ermöglicht die Emulation verschachtelter Klassen innerhalb von Funktionen, wenn auch mit bestimmten Einschränkungen.

Das obige ist der detaillierte Inhalt vonKönnen verschachtelte Klassen innerhalb von Funktionen in Go 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