func identityMat4() [16]float {
return {
1, 0, 0, 0,
0, 1, 0, 0,
0, 0, 1, 0,
0, 0, 0, 1 }
}
Tôi hy vọng bạn có ý tưởng về những gì tôi đang cố gắng làm từ ví dụ. Làm thế nào để làm điều này là Go?Khởi tạo mảng
func identityMat4() [16]float {
return {
1, 0, 0, 0,
0, 1, 0, 0,
0, 0, 1, 0,
0, 0, 0, 1 }
}
Tôi hy vọng bạn có ý tưởng về những gì tôi đang cố gắng làm từ ví dụ. Làm thế nào để làm điều này là Go?Khởi tạo mảng
func identityMat4() [16]float64 {
return [...]float64{
1, 0, 0, 0,
0, 1, 0, 0,
0, 0, 1, 0,
0, 0, 0, 1 }
}
Bạn không trả về ma trận nhận dạng. – peterSO
^cố định để dễ đọc và chính xác –
bạn cũng có thể viết ** trả lại [16] float64 ** –
Nếu bạn đang viết chương trình của bạn sử dụng thành ngữ Go, bạn sẽ được sử dụng lát. Ví dụ,
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]
Xem http://blog.golang.org/2011/01/go-slices-usage-and-internals.html cho sự khác biệt giữa mảng và lát. –
Blog Go chính thức bây giờ chỉ ra các ma trận chuyển đổi là một trong số ít các trường hợp sử dụng tốt để sử dụng mảng trực tiếp: "Mảng có vị trí của chúng - chúng là đại diện tốt cho ma trận chuyển đổi chẳng hạn - nhưng mục đích phổ biến nhất của chúng trong Go là giữ bộ nhớ cho một lát. " – tbone
s := []int{5, 2, 6, 3, 1, 4} // unsorted
sort.Ints(s)
fmt.Println(s)
Làm thế nào là có liên quan ở tất cả? – OneOfOne
Làm thế nào để sử dụng một initializer mảng để khởi tạo một khối bảng thử nghiệm:
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)
}
}
Tại sao là ma trận của bạn một mảng một chiều? Đi hỗ trợ mảng đa chiều/lát - sẽ không phải là một phù hợp hơn cho vấn đề? (http://golang.org/ref/spec#Array_types) –