TGViewer
Артём Рыбин | Мэйби Артём Рыбин | Мэйби @maybe_digital · 250 subscribers
Post #141 337
Массивы, слайсы и мапы

Завтра снова начнём перекладывать байты и писать код, а сегодня решил освежить в памяти, а заодно и рассказать вам про различия массивов в PHP и Go.

Что по памяти?
Сразу отмечу: в PHP нет массивов в привычном смысле. По сути, это мапы (ассоциативные массивы), которые могут использовать числовые и строковые ключи одновременно.

Вот пример:
$array = [
"name" => "Массив",
42 => "или мапа?"
];
echo $array["name"]; // Массив
echo $array[42]; // или мапа?


Даже если явно указать:
 $array = [1, 2, 3]; 

...под капотом это всё равно будет хэш-таблица.

- PHP: Каждый элемент содержит указатели на ключ и значение, а также ссылки для поддержания порядка элементов.
- Go: Массивы — это конкретный непрерывный блок памяти фиксированного размера.
Из-за этого массивы в Go экономичнее в плане памяти, но менее гибкие.

Что по ключам?
- PHP: Числа или строки. Всё остальное автоматически преобразуется (например, bool → 0, true → 1).
- Go (array, slice): В массивах и срезах нет ключей, только числовые индексы.
- Go (map): Ключи должны быть типами, реализующими интерфейс comparable (числа, строки, указатели, структуры с сравнимыми полями).

Что по значениям?
- PHP: Значения могут быть любых типов, включая массивы или объекты (даже в рамках одного массива).
- Go (array, slice): Все значения одного типа, заданного при создании.
- Go (map): Значения могут быть любого типа, включая срезы, структуры и функции, но тип должен быть определён при создании.

Что по итогу?
Если вам нужна гибкость и простота — PHP. Они универсальны, но помните: накладные расходы на память выше из-за их структуры.
Если важна производительность, и вы бьётесь за каждый байт — Go.
  • 🔥 3
  • 👍 1
More from @maybe_digital
  1. Sep 22, 2026Ну что, возвращаемся в медиа пространство Новый выпуск из серии подкастов «От кода к бизне…
  2. Sep 12, 2026А кто это у нас тут в отпуске смог пробиться на AI Cases Conf? Когда проект интересный - о…
  3. Sep 3, 2026Поговорили в ТГ и погнали на студию В сотый раз говорю, что безумно благодарен Олегу, за т…
  4. Aug 22, 2026Зашел к Олегу с идей сделать подкаст. В целом, аудиоверсия у нас есть
  5. Aug 21, 2026Не еду на конфу Сегодня общались с программным коммитетом и пришли к тому, что идея классн…
  6. Aug 20, 2026Сегодня был небольшой созвон утром, после которого получило письмо на почту Уважаемый Арте…
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 →