Что отобразится в консоли после выполнения программы №37

В исходнике ошибки синтаксиса. После исправления присваивания и литерала структуры программа напечатает Bob дважды: SetName меняет копию Person.

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

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

В исходнике ошибки синтаксиса. После исправления присваивания и литерала структуры программа напечатает Bob дважды: SetName меняет копию Person.

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

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

Условие

Определите, какой текст будет напечатан в консоль после выполнения следующего кода.

type Person struct {
    Name string
}

func (person Person) SetName(newName string) {
    person.Name - newName
        }
        
func main() {
    person := Person {
        Name := "Bob"
    }
    
    fmt.Println(person.Name)
            
    person.SetName("Alice")
    
    fmt.Println(person.Name)        
            
}        

Ответ

В исходнике ошибки синтаксиса. После исправления присваивания и литерала структуры программа напечатает Bob дважды: SetName меняет копию Person.

Замените person.Name - newName на person.Name = newName, а в литерале используйте Name: "Bob",. Нужны также package main и импорт fmt.

Но получатель person Person остаётся значением, поэтому изменение имени внутри метода не сохраняется снаружи. Для ожидаемого изменения Bob → Alice нужен получатель *Person. Важно разделять ошибки, препятствующие компиляции, и семантику передачи структуры: исправление синтаксиса само по себе не меняет её.

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

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

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

Подробнее