Что такое Stack

«Что такое Stack» — вопрос из категории Golang, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Стек (stack) — это структура данных, работающая по принципу LIFO (Last In, First Out). Последний добавленный элемент извлекается первым.

Основные операции:

  • Push — добавление элемента на вершину стека.
  • Pop — извлечение элемента с вершины.
  • Peek/Top — просмотр верхнего элемента без удаления.

Пример на Go:

package main

import "fmt"

type Stack []int

func (s *Stack) Push(v int) {
    *s = append(*s, v)
}

func (s *Stack) Pop() int {
    if len(*s) == 0 {
        panic("stack is empty")
    }
    res := (*s)[len(*s)-1]
    *s = (*s)[:len(*s)-1]
    return res
}

func main() {
    var s Stack
    s.Push(1)
    s.Push(2)
    fmt.Println(s.Pop()) // 2
}

Стек используется в рекурсии, парсинге, отмене операций (undo). В Go реализуется через слайс или список.