Инициализация массива Go func identityMat4() [16]float { return { 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 } } Надеюсь, вы поняли, что я пытаюсь сделать из примера. Как это сделать? Go? Ответ 1 func identityMat4() [16]float64 { return [...]float64{ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 } } (Нажмите, чтобы воспроизвести) Ответ 2 s := []int{5, 2, 6, 3, 1, 4} // unsorted sort.Ints(s) fmt.Println(s) Ответ 3 Если вы пишете свою программу, используя идиомы Go, вы будете использовать срезы. Например, 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] Ответ 4 Как использовать инициализатор массива для инициализации блока тестовой таблицы: 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) } }
Ответ 1 func identityMat4() [16]float64 { return [...]float64{ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 } } (Нажмите, чтобы воспроизвести)
Ответ 3 Если вы пишете свою программу, используя идиомы Go, вы будете использовать срезы. Например, 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]
Ответ 4 Как использовать инициализатор массива для инициализации блока тестовой таблицы: 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) } }