go / intermediate
Snippet
Konvertieren von Slices in Array-Pointer für Garantien fester Größe
In Go können Slices direkt in Array-Pointer konvertiert werden, wenn die Slice-Größe mindestens der Array-Länge entspricht. Dies ermöglicht es, Slices an Funktionen zu übergeben, die Arrays fester Größe erwarten, ohne die Elemente zu kopieren, und sorgt für Laufzeitvalidierung.
snippet.go
go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package mainimport "fmt"func processThreeElements(arr *[3]int) {arr[0] = 100arr[1] = 200arr[2] = 300}func main() {slice := []int{10, 20, 30}arrPtr := (*[3]int)(slice)processThreeElements(arrPtr)fmt.Println("Modified Slice:", slice)}
Erklärung
1
func processThreeElements(arr *[3]int) {
Eine Funktion, die einen Zeiger auf ein Array fester Größe mit 3 Elementen erwartet.
2
arrPtr := (*[3]int)(slice)
Konvertiert das Slice in einen Array-Pointer der Größe 3. Löst zur Laufzeit ein Panic aus, wenn das Slice kürzer als 3 ist.
3
processThreeElements(arrPtr)
Übergibt den Array-Pointer an die Funktion, wodurch der zugrunde liegende Speicher des Slices geteilt wird.