如何使用Cgo访问MATLAB数组中的值?

Using the MatLab C API and Go's Cgo package, I'm attempting to read a 24x3000000 matrix inside a mat-file in my Go program. I'm able to successfully read the dimensions of the matrix but how do I access the values inside each cell? (The goal is ultimately to return this matrix as a slice to my Go program.)

var realDataPtr *C.double
var field *C.mxArray

fieldName := C.CString("data")
field = C.mxGetField(pa, 0, fieldName)

rowTotal := C.mxGetM(field) // outputs 24
colTotal := C.mxGetN(field) // outputs 3000000

// get pointer to data in matrix
realDataPtr = C.mxGetPr(field)

// Print every element in the matrix
for row := 0; row < int(rowTotal); row++ {
    for col := 0; col < int(colTotal); col++ {
        // This is where I get stuck
    }
}

For reference, here's the Matrix Library API for C

Untested, since I don't have MatLab. For example,

import (
    "fmt"
    "unsafe"
)

// Print every element in the matrix
ptr := uintptr(unsafe.Pointer(realDataPtr))
for col := 0; col < int(colTotal); col++ {
    for row := 0; row < int(rowTotal); row++ {
        // This is where I get stuck
        elem := *(*float64)(unsafe.Pointer(ptr))
        fmt.Println(elem)
        ptr += 8
    }
}

Matrix data in MATLAB are stored in column major order, which means that the columns of the data are stored in sequential order in memory (this is the opposite to C and similar languages). Thus, if you wanted to access the data sequentially in C (I'm not immediately familiar with Go syntax, unfortunately), you could do the following:

for(col=0;col<colTotal;++col)
{
    for(row=0;row<rowTotal;++row)
    {
        data = realDataPtr[col*rowTotal + row];
    }
}