Какой текст появится в консоли при запуске программы №4

Вывод: strong, затем some strong, затем some string. s2 и s1 разделяют массив байтов, а исходная строка s0 не изменяется.

Короткий ответ

Что ответить на собеседовании

Вывод: strong, затем some strong, затем some string. s2 и s1 разделяют массив байтов, а исходная строка s0 не изменяется.

Подробный разбор

Ответ с пояснениями

Условие

Определите, какой вывод получит программа, написанная на Go:

package main
        
import (
        "fmt"
        )

func main (){
    
    s0 := "some string"
    s1 := []byte(s0)
    
    s2 := s1[5:]
    
    s2[3] = 'o'
    fmt.Println(string(s2))
    fmt.Println(string(s1))
    fmt.Println(string(s0))

}

Ответ

Вывод: strong, затем some strong, затем some string. s2 и s1 разделяют массив байтов, а исходная строка s0 не изменяется.

s1[5:] начинается со слова string. Его четвёртый байт, индекс 3, заменяется с i на o, поэтому получается strong. Преобразование строки в изменяемый []byte обеспечивает независимость от исходной строки; создание среза s2 уже не копирует байты. Для многобайтного UTF-8 произвольный байтовый индекс может повредить символ.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее