Go array initialization

前端 未结 4 1852
面向向阳花
面向向阳花 2021-02-05 00:30
func identityMat4() [16]float {
    return {
        1, 0, 0, 0,
        0, 1, 0, 0,
        0, 0, 1, 0,
        0, 0, 0, 1 }
}

I hope you get the idea

4条回答
  •  南笙
    南笙 (楼主)
    2021-02-05 00:34

    If you were writing your program using Go idioms, you would be using slices. For example,

    package main
    
    import "fmt"
    
    func Identity(n int) []float {
        m := make([]float, n*n)
        for i := 0; i < n; i++ {
            for j := 0; j < n; j++ {
                if i == j {
                    m[i*n+j] = 1.0
                }
            }
        }
        return m
    }
    
    func main() {
        fmt.Println(Identity(4))
    }
    
    Output: [1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1]
    

提交回复
热议问题