TGViewer
Библиотека Go для собеса | вопросы с собеседований Библиотека Go для собеса | вопросы с собеседований @go_interview_lib · 7.46K subscribers
Post #1314 1.51K
В Go существует несколько способов возврата структур или их частей. Назовите основные.

1. Возврат копии структуры

Функция возвращает значение, изменения копии не затронут оригинал:
func returnCopy() MyStruct {
return MyStruct{Value: 1}
}


2. Возврат указателя на структуру

Позволяет избежать копирования и работать напрямую с объектом в памяти:
func returnPointer() *MyStruct {
return &MyStruct{Value: 2}
}


3. Изменение через указатель-параметр

Функция принимает указатель и напрямую изменяет оригинальный объект без возврата:
func modifyStruct(s *MyStruct) {
s.Value = 3
}


4. Возврат части структуры

Возвращает только нужное поле, а не всю структуру целиком:
func returnValue(s MyStruct) int {
return s.Value
}


5. Возврат через интерфейс

Позволяет скрыть конкретную реализацию за абстракцией:
type MyInterface interface { DoSomething() }

func returnInterface() MyInterface {
return MyStruct{}
}


6. Срезы и мапы структур

Возврат набора структур через срез или ассоциативный массив:
func returnSlice() []MyStruct {
return []MyStruct{{Value: 4}, {Value: 5}}
}

func returnMap() map[string]MyStruct {
return map[string]MyStruct{
"first": {Value: 6},
"second": {Value: 7},
}
}


7. Возврат через канал


Передача структуры между горутинами для конкурентных сценариев:
func sendToChannel(ch chan MyStruct) {
ch <- MyStruct{Value: 8}
}


Эти подходы можно комбинировать и адаптировать под разные сценарии — учитывая требования к производительности и управлению памятью.

🐸 Библиотека Go для собеса
  • 🤔 15
  • ❤ 2
  • 🌚 2
  • 👍 1
  • 🤩 1
More from @go_interview_lib
  1. Sep 18, 2026А вы уже забрали свой подарок ко Дню программиста? К вашему профессиональному празднику Tp…
  2. Sep 15, 2026❓ Какой максимальный размер бинарного файла можно собрать В Go нет встроенного ограничения…
  3. Sep 15, 2026😭 Как не потратить недельный лимит AI-кодинга за три дня? Разберём на вебинаре, как трати…
  4. Aug 4, 2026❓ Объясните разницу между безопасным доступом к байтам строки через срез и использованием…
  5. Aug 4, 2026Покупать новый курс каждый раз, когда меняется рабочая задача, — довольно странная механик…
  6. Aug 4, 2026👅 Самое сложное — выбрать не курс, а направление Сегодня хочется разобраться в AI-агентах…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →