


Generics: In Schnittstellen eingebettete Einschränkungen und Strukturen
php-Editor Xiaoxin bietet Ihnen eine Einführung in Generika. Generics sind in Schnittstellen eingebettete Einschränkungen und Strukturen, die es uns ermöglichen, beim Schreiben von Code flexibler und effizienter zu sein. Durch die Verwendung von Generika können wir Typfehler zur Kompilierungszeit finden und beheben und so die Lesbarkeit und Wartbarkeit des Codes verbessern. Generics können uns auch dabei helfen, allgemeinere Datenstrukturen und Algorithmen zu entwerfen und so die Wiederverwendbarkeit von Code zu verbessern. In diesem Artikel befassen wir uns mit den Konzepten, der Verwendung und den praktischen Anwendungen von Generika, um Ihnen zu helfen, generische Programmierung besser zu verstehen und anzuwenden.
Probleminhalt
Der folgende Code kann nicht kompiliert und gemeldet werden ./main.go:35:7: test does not meet constraint (test missing in main.structwithname)
package main import "fmt" type Test struct { Name string } func (t Test) String() string { return fmt.Sprintf("Name: %v", t.Name) } type StructWithName struct { Name string } type Constraint interface { StructWithName // ~struct { // Name string // } String() string } func Print[T Constraint](x T) { //s := T{} fmt.Printf("Hello %v", x) } func main() { t := Test{ Name: "Test", } Print(t) }
Wenn ich jedoch den structwithname
auskommentiere und den ~struct-Block auskommentiere, lässt er sich einwandfrei kompilieren. Ich kann den semantischen Unterschied zwischen den beiden nicht verstehen.
Was ich versuche, ist eine generische Methode, die eine Struktur auf generische Weise verarbeiten kann, d. h. x := s{}
und sie dann an eine externe Bibliothek übergeben kann. In diesem Fall handelt es sich um den Terraform-Anbieter. Der Code in den Ressourcen ist sehr ähnlich. Mich stört die Menge an Duplikaten, die ich bei den vorhandenen Anbietern sehe. In meinem Fall sind die Ressourcen sehr ähnlich, einige liegen dazwischen Standardstrukturen Es gibt nur ein oder zwei Felder darauf. Ich möchte in der Lage sein, eine Reihe generischer Methoden zu schreiben, die alle ähnlichen Dinge tun und nur die Besonderheiten an anderer Stelle haben (duh!).
Ich befinde mich noch in der Anfangsphase meiner Go-Reise und kann Compilerfehler nicht verstehen.
Lösung
Wenn ich das richtig verstehe, ist das, was Sie wirklich wollen, nicht möglich. Go-Generika unterstützen den Zugriff auf eine Teilmenge von Strukturfeldern nicht.
- Siehe verwandte Inhalte: Generische Funktionen zum Festlegen von Feldern unterschiedlicher Struktur, die als zugeordnete Werte verwendet werden
Was die beteiligten Fehler angeht...
Der Name eines-Typs gibt die Identität des Typs an, und zwei Typen mit unterschiedlichen Namen (keine Aliase füreinander) sind immer unterschiedlich, daher sind test
und test
和 structwithname
zwei verschiedene Typen. Das einzige, was sie gemeinsam haben, ist ihr „grundlegender Typ“.
Type Constraint Interface { structwithname
Eine Schnittstelle ist ein Typsatz, der nur einen Typ enthält, nämlich
test
kein Mitglied dieses Typsatzes ist, ist dieser bedeutet, dass kein Typ test
verwendet werden darf, um diese Einschränkung zu erfüllen.
type constraint 接口 { structwithname }
接口是一个仅包含一种类型的类型集,即 structwithname
,并且由于 test
不是该类型集的成员,这意味着不可能使用 test
type
struct { name string
iststruct { name string }
是一个无名类型,任何无名类型的底层类型都是该类型本身,即 struct 的底层类型 { name string }
is struct { name string }
~t
,表示任何类型,其底层类型与 t
Die Tilde vor dem Typ in der Einschränkung, also ~t
, stellt
Typ dar, dessen
zugrundeliegender Typ derselbe ist wie t
. Oder genauer gesagt:
~t ist die Menge aller Typen, deren Basistyp t ist. struct { name string }
type Constraint interface { ~struct { Name string } }
Das obige ist der detaillierte Inhalt vonGenerics: In Schnittstellen eingebettete Einschränkungen und Strukturen. 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.

1. Klicken Sie zunächst mit der rechten Maustaste auf die leere Stelle der Taskleiste unten in Windows 11 und wählen Sie [Taskleisteneinstellungen]. 2. Suchen Sie rechts in den Taskleisteneinstellungen nach [taskbarcorneroverflow]. 3. Suchen Sie dann darüber nach [Uhr] oder [Uhr] und aktivieren Sie die Funktion. Methode 2: 1. Drücken Sie die Tastenkombination [win+r], um run aufzurufen, geben Sie [regedit] ein und drücken Sie zur Bestätigung die Eingabetaste. 2. Öffnen Sie den Registrierungseditor, suchen Sie darin nach [HKEY_CURRENT_USERControlPanel] und löschen Sie es. 3. Nach dem Löschen starten Sie den Computer neu und Sie werden zur Konfiguration aufgefordert. Wenn Sie zum System zurückkehren, wird die Uhrzeit angezeigt.

Antwort: Die folgenden Community-Foren und Diskussionsgruppen stehen für Fragen zur funktionalen Java-Programmierung zur Verfügung: StackOverflow: Die weltweit größte Q&A-Website zur Programmierung mit einer Community von Experten für funktionale Java-Programmierung. JavaFunctionalProgramming: Ein Community-Forum, das sich auf die funktionale Java-Programmierung konzentriert und Diskussionen zu Konzepten, Sprachfunktionen und Best Practices bietet. Redditr/Functionaljava: Ein Subreddit mit Schwerpunkt auf funktionaler Java-Programmierung, mit Schwerpunkt auf Tools, Bibliotheken und Technologien. Discord: JavaFunctional Programming: Discord-Dienst, der Diskussionen, Code-Sharing und Zusammenarbeit in Echtzeit ermöglicht

Wie verwende ich den Python-Code anderer Leute? Code-Repositories finden: Finden Sie den benötigten Code auf Plattformen wie PyPI und GitHub. Installationscode: Verwenden Sie pip oder klonen Sie das GitHub-Repository zur Installation. Module importieren: Verwenden Sie die Importanweisung in Ihrem Skript, um installierte Module zu importieren. Arbeiten mit Code: Zugriff auf Funktionen und Klassen in Modulen. (Optional) Passen Sie den Code an: Ändern Sie den Code nach Bedarf, um ihn an Ihr Projekt anzupassen.

Was soll ich tun, wenn die Uhrzeit auf meinem Win11-Computer immer falsch ist? Wir alle stellen die Uhrzeit oder den Kalender ein, wenn wir das Win11-System verwenden, aber viele Benutzer fragen sich, dass die Computerzeit immer falsch ist. Was ist also los? Benutzer können direkt auf die Taskleiste unten klicken und dann den Taskbarcorneroverflow suchen, um ihn einzurichten. Auf dieser Website erfahren Sie ausführlich, wie Sie den Zeitfehler auf Win11-Computern anpassen können. So stellen Sie die falsche Uhrzeit auf einem Windows 11-Computer ein. Methode 1: 1. Wir klicken zunächst mit der rechten Maustaste auf die leere Stelle der Taskleiste unten und wählen „Taskleisteneinstellungen“. Methode 2: 1. Drücken Sie die Tastenkombination Win+R, um Ausführen aufzurufen, geben Sie regedit ein und drücken Sie zur Bestätigung die Eingabetaste.

Häufige Ausnahmetypen und ihre Reparaturmaßnahmen bei der Entwicklung von Java-Funktionen Während der Entwicklung von Java-Funktionen können verschiedene Ausnahmen auftreten, die die korrekte Ausführung der Funktion beeinträchtigen. Im Folgenden sind häufige Ausnahmetypen und ihre Reparaturmaßnahmen aufgeführt: 1. NullPointerException Beschreibung: Wird beim Zugriff auf ein Objekt ausgelöst, das nicht initialisiert wurde. Fix: Stellen Sie sicher, dass Sie das Objekt auf Nicht-Null-Werte überprüfen, bevor Sie es verwenden. Beispielcode: try{Stringname=null;System.out.println(name.length());}catch(NullPointerExceptione){

Überlauf ist eine Eigenschaft von CSS, die verwendet wird, um den Anzeigemodus des Elementinhalts zu steuern, wenn er den Container überschreitet. Zu den verfügbaren Werten gehören: sichtbar: Der Inhalt ist sichtbar, der Überlaufcontainer ist ausgeblendet: Der Überlaufinhalt wird abgeschnitten Die Bildlaufleiste wird angezeigt, um den Überlaufinhalt anzuzeigen. Automatisch: Der Browser bestimmt automatisch, ob die Bildlaufleiste angezeigt werden soll. Vererben: Das Überlaufattribut des übergeordneten Elements erben

Als weltbekannte Kurzvideoplattform verfügt Douyin über eine riesige Nutzerbasis und Content-Ersteller. Da die Plattformregeln jedoch ständig aktualisiert und verbessert werden, kann es bei einigen Benutzern zu Kontosperrungen kommen. Dies hat in der Öffentlichkeit Fragen zur Transparenz und Fairness der Plattformverwaltung aufgeworfen. In diesem Artikel geht es um die Sperrung von Douyin-Konten und um die Frage, ob Benutzer nach der Sperrung ihrer Konten Einspruch einlegen können. Es kann viele Gründe für ein Verbot auf der Douyin-Plattform geben, unter anderem illegale Inhalte, Verstöße gegen Plattformbestimmungen, Verletzung der Rechte anderer Personen usw. Um die Ordnung der Plattform und die Interessen der Nutzer aufrechtzuerhalten, hat Douyin eine Reihe von Regeln und Überprüfungsmechanismen eingerichtet. Wenn einige Benutzer gegen die Regeln verstoßen, werden ihre Konten möglicherweise gesperrt. Einige Benutzer stellen jedoch möglicherweise die Gründe für das Verbot in Frage oder sind mit ihnen unzufrieden
