Что выведет код Junior Структуры, методы и интерфейсы обновлено

Что выведет Go: type switch

Вопрос

Что выведет программа? Go 1.23, в go.mod указано go 1.23. Каждую строку вывода пишите с новой строки.

package main

import "fmt"

func describe(v any) string {
    switch x := v.(type) {
    case nil:
        return "nil"
    case int, int64:
        return fmt.Sprintf("целое %v", x)
    case string:
        return "строка длиной " + fmt.Sprint(len(x))
    case error:
        return "ошибка " + x.Error()
    default:
        return fmt.Sprintf("другое %T", x)
    }
}

func main() {
    fmt.Println(describe(nil))
    fmt.Println(describe(int64(5)))
    fmt.Println(describe("ёж"))
    fmt.Println(describe(3.5))
}

Попробуйте сами

Напишите, что выведет код: каждый вывод с новой строки.

Показать ответ и разбор

Коротко

Код выведет: nil, целое 5, строка длиной 4, другое float64. nil-интерфейс попадает в case nil. int64 в ветку с двумя типами, там x остаётся any, но печатается как 5. len строки «ёж» в байтах: 4.

Что выведет

nil
целое 5
строка длиной 4
другое float64

Разбор

nil-интерфейс попадает в case nil. int64 в ветку с двумя типами, там x остаётся any, но печатается как 5. len строки «ёж» в байтах: 4. Дробное число уходит в default, %T даёт float64.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.