Что выведет код Junior Строки, байты и руны спрашивают часто обновлено

Что выведет Go: len и range по строке с кириллицей

Вопрос

Что выведет программа? Go 1.23, в go.mod указано go 1.23.

package main

import "fmt"

func main() {
    s := "Go!ё"
    n := 0
    for range s {
        n++
    }
    fmt.Println(len(s), n, s[3])
}

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

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

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

Коротко

Код выведет: 5 4 209. Латиница и знак по 1 байту, «ё» в UTF-8 занимает 2 байта (0xD1 0x91): len = 5. range идёт по рунам: 4 итерации. s[3] это первый байт «ё», 0xD1 = 209.

Что выведет

5 4 209

Разбор

Латиница и знак по 1 байту, «ё» в UTF-8 занимает 2 байта (0xD1 0x91): len = 5. range идёт по рунам: 4 итерации. s[3] это первый байт «ё», 0xD1 = 209.

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

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