В исходнике ошибки синтаксиса. После исправления присваивания и литерала структуры программа напечатает Bob дважды: SetName меняет копию Person.
Что отобразится в консоли после выполнения программы №37
В исходнике ошибки синтаксиса. После исправления присваивания и литерала структуры программа напечатает 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. Важно разделять ошибки, препятствующие компиляции, и семантику передачи структуры: исправление синтаксиса само по себе не меняет её.