Länge und Kapazität
Das Verständnis der Array-Länge
In Golang ist die Array-Länge eine grundlegende Eigenschaft, die die Anzahl der Elemente definiert, die ein Array aufnehmen kann. Im Gegensatz zu Slices haben Arrays eine feste Länge, die nach der Deklaration nicht geändert werden kann.
Bestimmung der Array-Länge
package main
import "fmt"
func main() {
numbers := [5]int{10, 20, 30, 40, 50}
// Using len() function to get array length
fmt.Println("Array Length:", len(numbers)) // Output: 5
}
Länge vs. Kapazität
Eigenschaft |
Array |
Slice |
Länge |
Bei der Deklaration festgelegt |
Kann dynamisch geändert werden |
Kapazität |
Entspricht der deklarierten Größe |
Kann größer als die Länge sein |
Modifikation |
Kann nicht vergrößert oder verkleinert werden |
Kann vergrößert oder verkleinert werden |
Visualisierung der Längenberechnung
graph TD
A[Array Length] --> B[Number of Elements]
A --> C[Determined at Compile Time]
A --> D[Immutable]
Praktische Längenoperationen
Iteration über die Array-Länge
package main
import "fmt"
func main() {
fruits := [4]string{"Apple", "Banana", "Cherry", "Date"}
// Iterating using length
for i := 0; i < len(fruits); i++ {
fmt.Printf("Fruit %d: %s\n", i, fruits[i])
}
}
Länge-bezogene Funktionen
len()
: Gibt die Anzahl der Elemente zurück
- Die Array-Länge kann nicht direkt geändert werden
- Liefert Informationen über die Größe zur Kompilierzeit
Speicherüberlegungen
graph LR
A[Array Memory] --> B[Fixed Size]
A --> C[Contiguous Memory Allocation]
A --> D[Predictable Memory Usage]
Fortgeschrittene Längentechniken
Kompilierzeitliche Längenprüfung
func processArray(arr [5]int) {
// This function only accepts arrays with exactly 5 elements
}
LabEx-Lernwissen
Bei LabEx betonen wir das Verständnis der unveränderlichen Natur der Array-Länge in Golang als ein Schlüsselkonzept für eine effiziente Speicherverwaltung.
Leistungseffekte
- Die feste Länge ermöglicht Optimierungen durch den Compiler
- Vorhersagbare Speicherzuweisung
- Kein Laufzeitaufwand für die Längenbestimmung
Vollständiges Beispiel: Demonstration der Länge
package main
import "fmt"
func main() {
// Different array declarations
numbers := [5]int{1, 2, 3, 4, 5}
mixedArray := [...]int{10, 20, 30}
fmt.Println("Numbers array length:", len(numbers)) // Output: 5
fmt.Println("Mixed array length:", len(mixedArray)) // Output: 3
}
Häufige Fallstricke
- Die Annahme, dass die Array-Länge geändert werden kann
- Nicht die Arraygrenzen überprüfen
- Das Verständnis der Unterschiede zwischen Länge und Kapazität fehlen