Struktur kann nicht als Typstruktur {...} verwendet werden.

WBOY
Freigeben: 2024-02-10 19:06:09
nach vorne
666 Leute haben es durchsucht

不能使用 struct 作为类型 struct {...}

Der PHP-Editor Xiaoxin wird in diesem Artikel einen wichtigen Hinweis vorstellen: In PHP können Sie „struct“ nicht als Typ verwenden. Dies ist auf Einschränkungen der PHP-Sprache selbst zurückzuführen, die keine „struct“-Typdefinitionen ähnlich denen in der C-Sprache unterstützt. In PHP können wir Klassen verwenden, um benutzerdefinierte Datenstrukturen sowie zugehörige Eigenschaften und Methoden zu definieren. Durch den Einsatz von Klassen können wir Daten flexibler und leistungsfähiger verarbeiten und komplexere Logik und Funktionen implementieren. Denken Sie daher beim Schreiben von PHP-Code daran, die Verwendung von „struct“ als Typdefinition zu vermeiden und stattdessen Klassen zu verwenden. Dadurch können die Eigenschaften und Spezifikationen der PHP-Sprache besser eingehalten werden, wodurch der Code lesbarer, verständlicher und wartbarer wird.

Frageninhalt

Ich habe diesen Code:

type Iterable[T any] struct {
    Val  T
    End  T
    Next func() (bool, T)
}

func acceptStructWithNext[T any](r struct{ Next func() (bool, T) }) {
    fmt.Println(r)
}

func main() {

    iterable := Iterable[int]{
        Val: 0,
        End: 100,
        Next: func() (bool, int) {
            return true, 0
        },
    }

    acceptStructWithNext[int](iterable) // error is here

}
Nach dem Login kopieren

Ich erhalte diesen Kompilierungsfehler:

<code>
Cannot use 'iterable' (type Iterable[int]) as the type struct {...}
</code>
Nach dem Login kopieren

Ich dachte, Strukturtypen sollten so etwas zulassen – was habe ich falsch gemacht?

Workaround

Ja, aber Go hat keine „Strukturtypen“. Bis zu einem gewissen Grad werden die Vorteile von Strukturtypen durch die impliziten Zufriedenheitsregeln von Schnittstellen erzielt. Dies funktioniert jedoch nur auf der Schnittstelle.

Bitte beachten Sie https://www.php.cn/link/2a2f98d3597419498e4d734d8c2dd106

Angenommen, Go wird lehrbuchähnliche Strukturtypen haben.

Das obige ist der detaillierte Inhalt vonStruktur kann nicht als Typstruktur {...} verwendet werden.. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
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!