TGViewer
Igor Panasyuk | IGORoutine Programming Igor Panasyuk | IGORoutine Programming @igoroutine · 2.21K subscribers
Post #47 1.69K

Forwarded from igoroutine.courses

Что будет выведено в stdout?

С точки зрения стандарта языка:

Each type argument is substituted for its corresponding type parameter in the generic declaration. This substitution happens across the entire function or type declaration, including the type parameter list itself and any types in that list.

То есть, тип, объявленный внутри generic-функции insert[T], автоматически захватывает любой T, даже, если сам этот тип не использует T явно.

Таким образом, в
m будут ключи Data[string] и Data[int] и len(m) == 2.

https://go.dev/play/p/Nl250o6wX2X

Но всё немного тоньше. Если написать сигнатуру
func insert[T comparable](m map[any]T, a T), то итоговый ответ будет 1, но почему?

https://go.dev/play/p/EkkuBuwtQJ6

Потому что компилятор попытается вывести тип
T и ему подойдёт только any, следовательно, в m будет всегда один ключ Data[any].

Two instantiated types are identical if they are instantiated from the same generic type and with the same full‑form type argument list.

В таких ситуациях нужно внимательно смотреть за выводом типов

🙄🙄 Ещё больше примеров на курсах
  • ❤ 14
  • 🔥 4
  • 😱 3
  • 👍 1
More from @igoroutine
  1. Sep 29, 2026Отправляешь очередной промпт нейронке и ловишь себя на мысли: «Я - какой-то ненастоящий пр…
  2. Jul 13, 2026Доброго вечера и хорошей недели)) На ней выйдут два новых видео. Рассвет сегодня не заснял…
  3. Jul 6, 2026Доброе утро и хорошей недели
  4. Jul 4, 2026AI заменит образование? В последнее время в индустрии очень остро стоит вопрос о смысле тр…
  5. Jul 1, 2026Без этих знаний твой Go-вайбкод положит прод | Пакет sync изнутри Давно обещал выпустить п…
  6. Jun 29, 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 →