Что выведет код Junior Тесты, бенчмарки и модули обновлено
Что выведет Go: табличный прогон без testing
Вопрос
Что выведет программа? Go 1.23, в go.mod указано go 1.23.
package main
import "fmt"
func Abs(x int) int {
if x < 0 {
return -x
}
return x
}
func main() {
tests := []struct {
name string
in int
want int
}{
{"плюс", 3, 3},
{"минус", -3, 3},
{"ноль", 0, 0},
{"минимум int8", -128, 128},
}
failed := 0
for _, tt := range tests {
if got := Abs(tt.in); got != tt.want {
failed++
fmt.Println("FAIL", tt.name, got)
}
}
fmt.Println("провалено:", failed)
}
Попробуйте сами
Напишите, что выведет код: каждый вывод с новой строки.
Показать ответ и разбор
Коротко
Код выведет: провалено: 0. Табличный тест перебирает анонимные структуры.
Что выведет
провалено: 0
Разбор
Табличный тест перебирает анонимные структуры. Все случаи проходят: функция работает с int, а -128 в int легко превращается в 128 (переполнения нет, это не int8).
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.