按范围切片的过滤器编号问题

问题描述 投票:0回答:1

我必须过滤并输入 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
arrays go range modulo
1个回答
0
投票

这段代码完全错误,你使用的是数组而不是数组 元素并且没有正确检查 % 条件。循环应该是:

for _, number := range numbers {
    if number%2 == 0 {
        evenNumbers = append(evenNumbers, number)
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.