Typ aus Slice erstellen
Ich möchte einen Datentyp wie einen Stapel erstellen. Ich möchte Einträge „oben“ hinzufügen und entfernen und diese ausdrucken können. In diesem Beispiel wird der Typ xpath verwendet, um das XML-Dokument zu durchlaufen und den aktuellen Pfad zu verfolgen.
Also habe ich einen xpath[]string-Typ erstellt und die entsprechenden Funktionen geschrieben, nämlich: push() pop() und string().
Mein Problem ist, dass der Typ seinen Zustand verliert, was mich etwas verwirrt, weil ich dachte, Slices seien Referenztypen. Wenn ich versuche, die Funktion in einen Zeigerempfänger zu ändern, erhalte ich außerdem mehrere Kompilierungsfehler. Um dies an dieser Stelle zu beheben, habe ich einfach den []string in eine Struktur mit einem einzelnen []string-Feld geändert. Obwohl es mich immer noch stört, dass ich es nicht zum Laufen bringen kann, wenn ich nur Slice als Basistyp verwende.
Was ist der richtige Ansatz?
package main import ( "fmt" "strings" ) type xPath []string func (xp xPath) push(entry string) { xp = append(xp, entry) } func (xp xPath) String() string { sb := strings.Builder{} sb.WriteString("/") sb.WriteString(strings.Join(xp, "/")) return sb.String() } func main() { xp := xPath{} xp.push("rss") xp.push("channel") xp.push("items") fmt.Println(xp) // Output: / // Wanted: /rss/channel/items }
Richtige Antwort
Ihre Push-Funktion macht nichts.
Korrekte Push-Funktionalität:
func (xp *xPath) push(entry string) { *xp = append(*xp, entry) }
Ein Slice ist ein Referenztyp in Situationen, in denen Sie seinen Wert ändern möchten (z. B. mithilfe eines Index).
Wenn Sie sie hingegen neu zuordnen und das gesamte Slice ersetzen möchten, sollten Sie Zeiger verwenden.
In Bezug auf Stapel gibt es einige bessere Möglichkeiten: Schauen Sie sich diese Frage an.
Das obige ist der detaillierte Inhalt vonTyp aus Slice erstellen. 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



Probleme und Lösungen, die beim Kompilieren und Installieren von Redis auf Apple M1 Chip Mac auftreten, können viele Benutzer ...

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 ...

Ja, die H5-Seitenproduktion ist eine wichtige Implementierungsmethode für die Front-End-Entwicklung, die Kerntechnologien wie HTML, CSS und JavaScript umfasst. Entwickler bauen dynamische und leistungsstarke H5 -Seiten auf, indem sie diese Technologien geschickt kombinieren, z. B. die Verwendung der & lt; canvas & gt; Tag, um Grafiken zu zeichnen oder JavaScript zu verwenden, um das Interaktionsverhalten zu steuern.

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

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

C -Sprachkennungen können keine Leerzeichen enthalten, da sie Verwirrung und Schwierigkeiten bei der Aufrechterhaltung verursachen können. Die spezifischen Regeln sind wie folgt: Sie müssen mit Buchstaben oder Unterstrichen beginnen. Kann Buchstaben, Zahlen oder Unterstriche enthalten. Kann illegale Zeichen nicht enthalten (wie besondere Symbole).
