英文:
Problem with filter numbers in slice by range
问题
我有一个问题,关于我需要过滤并输入到evenNumbers数组中的范围数字,但是我得到了编译错误。
使我编译通过!
//
// 我还没有完成
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{} // 使用range来过滤偶数
for _, evenNumber := range numbers {
if evenNumber % 2 == 0 {
evenNumbers = append(evenNumbers, evenNumber)
}
}
if !reflect.DeepEqual(evenNumbers, []int{2, 4, 6, 8, 10}) {
t.Errorf("evenNumbers不包含所有所需的偶数,得到%v", evenNumbers)
}
}
请检查下面的输出:
command-line-arguments_test [command-line-arguments.test]
exercises/range/range3/main_test.go:18:22: 无法将2(无类型的int常量)转换为[]int
exercises/range/range3/main_test.go:19:27: 无法将append(numbers)(类型为[]int的值)作为赋值语句中的int类型使用
FAIL command-line-arguments [构建失败]
FAIL
英文:
I have a problem with the range numbers which I have to filter and enter into the evenNumbers array, but I get compilation errors
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)
}
}
Check the output below
# 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
答案1
得分: 1
这段代码完全错误,你使用了数组而不是数组元素,并且没有正确检查 % 条件。循环应该是这样的:
for _, number := range numbers {
if number%2 == 0 {
evenNumbers = append(evenNumbers, number)
}
}
英文:
This code is totally wrong, you are using arrays instead of array
elements and don't check % condition correctly. The loop should be:
for _, number := range numbers {
if number%2 == 0 {
evenNumbers = append(evenNumbers, number)
}
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论