🟡 Средний · 2 очк. Разное / продвинутое
Что выведет: s := "hello"; fmt.Println(s[0])?
A "h"
B 104 (код байта)
C Ошибку
D 'h'
Объяснение вопроса

В Go строка - это последовательность байт. Индексация s[0] возвращает первый байт, а не символ. Для строки "hello" это байт с кодом 104 (ASCII 'h').

Почему выводится число

fmt.Println(s[0]) выводит тип byte (он же uint8), поэтому на экран попадает число 104.

s := "hello"
fmt.Println(s[0])           // 104
fmt.Printf("%c", s[0])      // h
fmt.Println(string(s[0]))  // h

Многобайтовые символы

Для UTF-8 (кириллица, эмодзи) один символ может занимать несколько байт. s[i] вернёт один байт, возможна середина символа. Для перебора символов используйте for _, r := range s.

  • len(s) - количество байт
  • s[i] - байт по индексу
  • []rune(s) - слайс символов (рун)
🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.