我必须过滤并输入 evenNumbers 数组的范围编号有问题,但我得到编译错误
Make me compile!
//
// I AM NOT DONE
package main_test
import (
"reflect"
"testing"
)
func TestFilterEvenNumbers(t *testing.T) {
numbers := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
evenNumbers := []int{} // use range to filter even numbers
for _, evenNumbers := range numbers {
if numbers % 2 {
evenNumbers = append(numbers)
}
}
if !reflect.DeepEqual(evenNumbers, []int{2, 4, 6, 8, 10}) {
t.Errorf("evenNumbers does not contain all the required even
numbers, got %v", evenNumbers)
}
}
检查下面的输出
# command-line-arguments_test [command-line-arguments.test]
exercises/range/range3/main_test.go:18:22: cannot convert 2 (untyped int constant) to []int
exercises/range/range3/main_test.go:19:27: cannot use append(numbers) (value of type []int) as type int in assignment
FAIL command-line-arguments [build failed]
FAIL
这段代码完全错误,你使用的是数组而不是数组 元素并且没有正确检查 % 条件。循环应该是:
for _, number := range numbers {
if number%2 == 0 {
evenNumbers = append(evenNumbers, number)
}
}