func identityMat4() [16]float {
return {
1, 0, 0, 0,
0, 1, 0, 0,
0, 0, 1, 0,
0, 0, 0, 1 }
}
この例では、私がしようとしていることのアイデアを得ることを望みます。これはどうやってやるの?配列の初期化
func identityMat4() [16]float {
return {
1, 0, 0, 0,
0, 1, 0, 0,
0, 0, 1, 0,
0, 0, 0, 1 }
}
この例では、私がしようとしていることのアイデアを得ることを望みます。これはどうやってやるの?配列の初期化
func identityMat4() [16]float64 {
return [...]float64{
1, 0, 0, 0,
0, 1, 0, 0,
0, 0, 1, 0,
0, 0, 0, 1 }
}
あなたが行くのイディオムを使用してプログラムを書いた場合は、スライスを使用することでしょう。例えば、
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]
http://blog.golang.org/2011/01/go-slices-usage-and-internals.htmlを参照してください。配列とスライスの違い。 –
公式のGoブログでは、変換行列を、配列を直接使用するための少数の良い使用例の1つとして具体的に指摘しています: "配列はそれらの場所を持っています - 例えば変換行列の良い表現ですが、 Goはスライスのためのストレージを保持することです。 – tbone
s := []int{5, 2, 6, 3, 1, 4} // unsorted
sort.Ints(s)
fmt.Println(s)
テストテーブルブロックを初期化するために、配列初期化子を使用する方法
どのように関連性がありますか? – OneOfOne
:
tables := []struct {
input []string
result string
} {
{[]string{"one ", " two", " three "}, "onetwothree"},
{[]string{" three", "four ", " five "}, "threefourfive"},
}
for _, table := range tables {
result := StrTrimConcat(table.input...)
if result != table.result {
t.Errorf("Result was incorrect. Expected: %v. Got: %v. Input: %v.", table.result, result, table.input)
}
}
なぜ、あなたの行列は一次元配列のですか? Goは多次元配列/スライスをサポートしていますが、これは問題に適していませんか? (http://golang.org/ref/spec#Array_types) –