逐元素矩阵运算Google Go?

I'm wondering if theres a package that provides efficient element-wise matrix operations in Go? Something similar to GSL?

It is easy to call e.g. cblas via cgo:

package main

// #include <cblas.h>
// #cgo LDFLAGS: -L/usr/lib64/atlas -lcblas
import "C"

import "fmt"

type matrix struct {
    rows  int
    cols  int
    elems []float32
}

func (a matrix) cblasmul(b matrix) (c matrix) {
    c = matrix{a.rows, b.cols, make([]float32, a.rows*b.cols)}
    C.cblas_sgemm(
        C.CblasRowMajor, C.CblasNoTrans, C.CblasNoTrans,
        C.int(a.rows), C.int(b.cols), C.int(a.cols),
        1.0,
        (*C.float)(&a.elems[0]), C.int(a.cols),
        (*C.float)(&b.elems[0]), C.int(b.cols),
        0.0,
        (*C.float)(&c.elems[0]), C.int(c.cols))

    return c
}

func main() {
    a := matrix{100, 100, make([]float32, 100*100)}
    b := matrix{100, 100, make([]float32, 100*100)}
    // ...
    c := a.cblasmul(b)
    fmt.Println(c)
}

There are various cgo-bindings to GSL and even some attempts at pure Go ports out there. None seem to have much recognition yet (as far as stars are concerned) and have been inactive for a few months, but you may want to take a look at the code:

http://godoc.org/?q=gsl