// Вопрос 1. Что выведет на экран?

Данный код не скомпилируется и вызовет ошибку компиляции.

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

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

Данный код не скомпилируется и вызовет ошибку компиляции.

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

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

Условие

// Вопрос 1. Что выведет на экран?

package main

import "fmt"

func main() { s := "Hello world" s[0] = "h" fmt.Println(s) }

Ответ

Данный код не скомпилируется и вызовет ошибку компиляции.

Причина в том, что строки в Go являются неизменяемыми срезами байт. Попытка изменить отдельный байт строки, как в s[0] = 'h', невозможна и приведёт к ошибке типа "cannot assign to s[0]".

Если нужно изменить строку, её следует преобразовать в срез байт или рун, изменить нужный элемент и затем преобразовать обратно в строку:

package main

import "fmt"

func main() {
    s := "Hello world"
    b := []byte(s)
    b[0] = 'h'
    s = string(b)
    fmt.Println(s) // выведет "hello world"
}

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку