


Verwenden Sie „any', um eine gemeinsame Schnittstelle zu instanziieren. struct implementiert sie nicht
In diesem Artikel stellt Ihnen der PHP-Editor Youzi die Methode zur Instanziierung einer universellen Schnittstelle mit „any“ vor und erklärt, warum struct diese nicht implementiert. Generische Schnittstellen sind ein sehr nützliches Entwurfsmuster, das uns eine flexiblere Vorgehensweise beim Schreiben von Code ermöglicht. Bei der Verwendung gemeinsamer Schnittstellen müssen wir jedoch auf einige Details achten, um unnötige Probleme zu vermeiden. Werfen wir einen Blick darauf, wie man mit „any“ eine generische Schnittstelle richtig instanziiert und verstehen, warum struct sie nicht implementiert.
Frageninhalt
Kann jemand erklären, warum *DataTo
不满足 ToType[any]
?
Versuchen Sie, eines zu bauen DTOer
,将一个结构的所有值复制到另一个结构,并设置一些显式值(在本例中为 V
)
https://go.dev/play/p/-oobZrw5Ewe
// You can edit this code! // Click here and start typing. package main import "fmt" type DataFrom struct { V1 int } type DataTo struct { V int } func (m *DataTo) SetVal() { m.V = 1 return } type ToType[T any] interface { SetVal() *T } type DTO[TFrom any, TTo ToType[any]] struct { Get func(from TFrom) TTo } func main() { dto := &DTO[DataFrom, *DataTo]{ Get: func(from DataFrom) *DataTo { return &DataTo{V: from.V1 + 666} }, } vFrom := DataFrom{V1: 1} vTo := dto.Get(vFrom) fmt.Println(vTo.V) }
Lösung
weilany
ein statischer Typ ist.
Wenn Sie dies verwenden, um einen generischen Typ wie ToType
zu instanziieren, erwartet der generische Typ genau ToType
这样的泛型类型,则该泛型类型将准确地期望 any
.
Bestimmte Verwendungen von Typparametern können dieses Problem verbergen, zum Beispiel:
type Foo[T any] struct { Value T } Foo[any]{Value: 12} // ok
Normalerweise können Sie wie oben einen beliebigen Typ für any
指定任何类型,因为 any
只是空接口 interface{}
angeben, da
interface{}
ist und jeder Typ die leere Schnittstelle erfüllt.
*T
)时,使用 any
实例化意味着完全是 *any
。因此,您可以将 ToType[any]
Wenn Typparameter für zusammengesetzte Typen verwendet werden (z. B. *T
), bedeutet die Instanziierung mit
genau *any
*DataTo
显然不是 *any
. Sie können sich also ToType[any]
als dasselbe vorstellen:
type ToTypeAny interface {
SetVal()
*any
}
Strukturzeiger dem Schnittstellenzeiger zuweisen
Wenn Sie die Struktur wie folgt deklarieren, wird sie kompiliert: 🎜
type DTO[TFrom any, TTo ToType[DataTo]] struct { Get func(from TFrom) TTo }
type DTO[TFrom any, T any, TTo ToType[T]] struct { Get func(from TFrom) TTo } &DTO[DataFrom, DataTo, *DataTo]{ ... }
Das obige ist der detaillierte Inhalt vonVerwenden Sie „any', um eine gemeinsame Schnittstelle zu instanziieren. struct implementiert sie nicht. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Seit seiner Einführung im Jahr 2009 hat sich Bitcoin zu einem führenden Unternehmen in der Welt der Kryptowährungen entwickelt und sein Preis hat enorme Schwankungen erfahren. Um einen umfassenden historischen Überblick zu bieten, stellt dieser Artikel Bitcoin-Preisdaten von 2009 bis 2025 zusammen und deckt wichtige Marktereignisse, Änderungen der Marktstimmung und wichtige Faktoren ab, die die Preisbewegungen beeinflussen.

Bitcoin hat als Kryptowährung seit seiner Einführung erhebliche Marktvolatilität erlebt. Dieser Artikel bietet einen Überblick über den historischen Preis von Bitcoin seit seiner Geburt, um den Lesern zu helfen, seine Preistrends und Schlüsselmomente zu verstehen. Durch die Analyse der historischen Preisdaten von Bitcoin können wir die Einschätzung des Marktes über seinen Wert und die Faktoren, die seine Schwankungen beeinflussen, verstehen und eine Grundlage für zukünftige Investitionsentscheidungen schaffen.

Seit seiner Gründung im Jahr 2009 hat der Preis von Bitcoin im November 2021 auf 69.044,77 USD auf 69.044,77 USD gestiegen und im Dezember 2018 auf 3.191,22 USD gesunken. Ab Dezember 2024 hat der jüngste Preis 100.204 USD überschritten.

Echtzeit-Bitcoin-USD-Preis Faktoren, die den Bitcoin -Preis beeinflussen Indikatoren für die Vorhersage zukünftiger Bitcoin -Preise Hier finden Sie einige wichtige Informationen zum Preis von Bitcoin in den Jahren 2018-2024:

Die Methode zur Anpassung der Größe der Größe der Größe der Größe in CSS ist mit Hintergrundfarben einheitlich. In der täglichen Entwicklung begegnen wir häufig Situationen, in denen wir die Details der Benutzeroberfläche wie Anpassung anpassen müssen ...

Wie kann man den 45-Grad-Kurveneffekt des Segmenters erreichen? Bei der Implementierung des Segmenters verwandeln Sie den rechten Rand in eine 45-Grad-Kurve, wenn Sie auf die linke Schaltfläche klicken, und der Punkt ...

Wichtiger Knoten für Bitcoin Historical Price 3. Januar 2009: Genesis Block wurde generiert, das erste Bitcoin wurde mit einem Wert von USD 0 generiert. 5. Oktober: Als erste Bitcoin -Transaktion kaufte ein Programmierer zwei Pizzen mit 10.000 Bitcoins, entspricht 0,008 USD. 9. Februar 2010: Die Mt. Gox Exchange ging online und wurde zur Hauptplattform für den frühen Bitcoin -Handel. 22. Mai: Bitcoin bricht zum ersten Mal 1 $ durch. 17. Juli: Bitcoin-Preis fiel auf 0,008 USD und erreichte ein Allzeittief. 9. Februar 2011: Bitcoin Price bricht zum ersten Mal 10 US -Dollar durch. 10. April: Mt. Go

Das Problem der Containeröffnung aufgrund einer übermäßigen Auslassung von Text unter Flex -Layout und Lösungen werden verwendet ...
