Перечисли основные структуры данных и приведи примеры их реализации/использования в Go (массивы, слайсы, map/хеш-таблица).

В Go существуют следующие основные встроенные (primitive) и составные (composite) структуры данных:

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

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

В Go существуют следующие основные встроенные (primitive) и составные (composite) структуры данных:

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

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

В Go существуют следующие основные встроенные (primitive) и составные (composite) структуры данных:

Встроенные:

  • Булевы (bool)

  • Числовые типы:

    • Целочисленные (int, int8, int16, int32, int64, uint, uint8, uint16, uint32, uint64, uintptr)
    • Числа с плавающей точкой (float32, float64)
    • Комплексные числа (complex64, complex128)
    • Байт (byte - псевдоним uint8)
    • Руна (rune - псевдоним int32, представляет символ Unicode)
  • Строки (string)

Составные:

  • Массивы (array)

    • Фиксированный размер.
    var arr [5]int // массив из 5 целых чисел
    
  • Срезы (slice)

    • Динамический размер, основаны на массивах.
    var s []int // неинициализированный срез
    s = make([]int, 5, 10) // срез длиной 5 с вместимостью 10
    
  • Карты (map)

    • Неупорядоченная коллекция пар ключ-значение.
    m := make(map[string]int) // карта с ключами string и значениями int
    
  • Структуры (struct)

    • Типизированная коллекция полей.
    type Person struct {
        Name string
        Age  int
    }
    
  • Указатели (pointer)

    • Хранят адрес ячейки памяти.
    var x int = 10
    var p *int = &x // p указывает на x
    
  • Функции (func)

    • В Golang функции являются типами первого класса.
    type MyFunc func(int) string // тип функции
    
  • Каналы (channel)

    • Используются для синхронизации и обмена данными между горутинами.
    ch := make(chan int) // небуферизованный канал для int
    
  • Интерфейсы (interface)

    • Представляют набор методов, которые тип должен реализовать.
    type Reader interface {
        Read(p []byte) (n int, err error)
    }
    

Также стоит упомянуть о наличии других важных составных типов, таких как:

  • Срезы байт ([]byte)
  • Срезы рун ([]rune)

Эти структуры данных обеспечивают гибкость и производительность для широкого спектра задач в Go.

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

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

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

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