go / expert
Snippet
Mehrdimensionale Array-Index-Faltung in zusammenhängenden Speicher
Feste mehrdimensionale Arrays in Go belegen zusammenhängende Speicherblöcke in zeilenweiser Anordnung (Row-Major Order). Das explizite Falten von 2D-Matrixindizes (i*stride + j) in ein flaches 1D-Array gewährleistet ein deterministisches Stack-Layout ohne dynamische Slice-Allokationen.
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 FlattenMatrix3x3(matrix *[3][3]float64) [9]float64 {var flat [9]float64for i := 0; i < 3; i++ {for j := 0; j < 3; j++ {flat[i*3+j] = matrix[i][j]}}return flat}func main() {m := [3][3]float64{{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}f := FlattenMatrix3x3(&m)fmt.Println(f)}
Erklärung
1
func FlattenMatrix3x3(matrix *[3][3]float64) [9]float64 {
Akzeptiert einen Zeiger auf ein festes 2D-Array [3][3]float64, um die Übergabe von Array-Inhalten als Wert zu vermeiden.
2
var flat [9]float64
Allokiert ein festes 1D-Zielarray auf dem Stack.
3
flat[i*3+j] = matrix[i][j]
Faltet mehrdimensionale Zeilen- und Spaltenindizes in einen linearen Index für eine zusammenhängende Speicherplatzierung.