Heim >Backend-Entwicklung >Golang >Struktur kann nicht als Typstruktur {...} verwendet werden.

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

WBOY
WBOYnach vorne
2024-02-10 19:06:09705Durchsuche

不能使用 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

}

Ich erhalte diesen Kompilierungsfehler:

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

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen