
Go-Datenstrukturen
Arrays, Slices, Maps, Structs, Pointer, make vs new, nil-Werte
1Was ist ein Slice in Go?
Was ist ein Slice in Go?
Antwort
Ein Slice ist eine dynamische Sicht auf ein zugrunde liegendes Array, die das Bearbeiten von Element-Sequenzen variabler Länge ermöglicht. Im Gegensatz zu Arrays, die eine zur Compile-Zeit festgelegte feste Größe haben, können Slices durch Operationen wie append dynamisch wachsen oder schrumpfen. Diese Flexibilität macht sie zur am häufigsten verwendeten sequenziellen Datenstruktur in Go, um Sammlungen homogener Elemente zu speichern.
2Was ist der Hauptunterschied zwischen einem Array und einem Slice in Go?
Was ist der Hauptunterschied zwischen einem Array und einem Slice in Go?
Antwort
Der grundlegende Unterschied liegt in der Größe: Ein Array hat eine zur Compile-Zeit festgelegte feste Größe und ist Teil des Typs selbst, während ein Slice eine dynamische Größe hat, die sich zur Laufzeit ändern kann. Diese Unterscheidung bedeutet, dass zwei Arrays unterschiedlicher Größe als inkompatible Typen gelten, während alle Slices desselben Elementtyps kompatibel sind. Slices sind daher flexibler und werden in modernem Go-Code häufiger verwendet.
3Wie erstellt man einen leeren Slice in Go?
Wie erstellt man einen leeren Slice in Go?
Antwort
Die Literal-Syntax mit leeren eckigen Klammern gefolgt von leeren geschweiften Klammern ist die idiomatische Art, einen initialisierten leeren Slice zu erstellen. Dieser Ansatz erzeugt einen Slice der Länge 0, aber nicht nil, bereit, Elemente per append aufzunehmen. Anders als eine einfache Deklaration, die einen nil-Slice ergeben würde, garantiert diese explizite Initialisierung einen sofort nutzbaren Slice ohne Risiko unerwarteten Verhaltens beim Hinzufügen von Elementen.
Welche Funktion sollte verwendet werden, um einen Slice mit einer bestimmten Kapazität zu initialisieren?
Was passiert, wenn ein Element zu einem Slice hinzugefügt wird, dessen Kapazität erreicht ist?
+17 Interview-Fragen
Weitere Go-Interviewthemen
Go-Grundlagen
Go-Interfaces
Fehlerbehandlung
Goroutines-Grundlagen
Channels
Go Modules
HTTP-Server
HTTP-Client
JSON-Kodierung
Database/SQL
context-Paket
Testing
Concurrency-Patterns
Synchronisationsprimitive
Go-Web-Frameworks
REST-API-Design
gRPC
Reflection
Speicherverwaltung
Performance-Optimierung
Generics
Go Design Patterns
Microservices
Sicherheit und Authentifizierung
Docker & Containerization
Kubernetes Basics
Fortgeschrittenes Go
CLI-Entwicklung
Meistere Go für dein nächstes Interview
Zugang zu allen Fragen, Flashcards, technischen Tests, Code-Review-Übungen und Interview-Simulatoren.
Kostenlos starten