Что выведет код 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 ошибок.