Тёмный

Пробуем дженерики Go на практике 

Николай Тузов — Golang
Подписаться 18 тыс.
Просмотров 15 тыс.
50% 1

Дженерики наконец появились в Go - в версии 1.18, релиз которой состоялся 15 марта.
В этом видео мы "пощупаем" их на практике и напишем что-нибудь полезное.
❤️ Если у вас есть желание поддержать развитие канала:
/ tuzov
boosty.to/nikolay.tuzov
----
Другие мои проекты:
🎙 Подкаст по Go: tuzov.link/gogetpodcast1 - в первом выпуске мы подробно обсуждаем дженерики.
👾 Мой канал в Telegram: t.me/ntuzov
🗣 Чат в Telegram: t.me/+zsSZ63wEJDs3NGVi
👀 Golang Digest: t.me/golang_digest - мои регулярные подборки интересных материалов по Go.
Мой Telegram-канал: t.me/ntuzov 👾
Golang Digest: t.me/golang_digest - регулярные подборки интересных материалов по Go.
Тайм-коды:
00:00 Вступление
00:20 Пример: почему без дженериков живётся плохо?
02:39 Решение проблемы с помощью дженериков
02:57 Синтаксис дженериков и constraint'ы
04:43 Constraint comparable
05:30 Пишем свой constraint - Ordered
06:09 Используем constraint Ordered из golang.org/x/constraints
07:22 Слайсы: функция IsContains()
09:32 Слайсы: функция Sum() и constraint Number
10:58 Слайсы: функция Reduce()
14:58 Слайсы: задание для практики - Map() и Filter()
16:15 Тернарный оператор
17:50 Реализация Max() через тернарный оператор
18:28 Заключение
#golang #generics #itubeteam #ityoutubersru

Опубликовано:

 

9 июн 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 48   
@nikolay_tuzov
@nikolay_tuzov 2 года назад
❤️ Если у вас есть желание поддержать развитие канала: www.patreon.com/tuzov boosty.to/nikolay.tuzov
@flamehowk
@flamehowk Год назад
1:27 А вот и не правильно... Мы ничего не будем копировать, мы просто вызов функции сделаем по-людски: fmt.Println(Max(int(x), int(y))) И всех проблем... и не нужно никакой огород городить.
@user-tb9in7go8u
@user-tb9in7go8u Год назад
С лицом и эмоциями живее, ближе, больше ощущения, что объясняет человек рядом👍
@georgiy_kulagin
@georgiy_kulagin 2 года назад
Спасибо за очередное отличное разжевывание материала! С вебкой добавляется больше интерактива и видео как-то живее что-ли смотрится.
@yokai6693
@yokai6693 2 года назад
Нештячек, Спасибище за оперативность!!
@trypophobia7497
@trypophobia7497 2 года назад
Спасибо за урок, думаю, что для функции Reduce лучше использовать два constraint [A, T any] так как иногда init может быть коллекцией, например, чтоб не использовать filter затем map, а пройтись одним Reduce например func Reduce[A, T any](collection []T, callback func(acc A, current T) A, initValue A) A { for _, el := range collection { initValue = callback(initValue, el) } return initValue } list := []uint64{1, 2, 3, 4, 5} list = Reduce(list, func(acc []uint64, current uint64) []uint64 { if current%2 == 0 { acc = append(acc, current*2) } return acc }, make([]uint64, 0, len(list)))
@vyacheslavbogomolov7970
@vyacheslavbogomolov7970 2 года назад
Спасибо за проделанную работу!)
@user-ud2cb8ky4k
@user-ud2cb8ky4k 2 года назад
Спасибо большое, записывай ещё! Отличное лицо!
@damir8847
@damir8847 2 года назад
Все круто, спасибо! Думаю, с веб-камерой лучше, плюс личный бренд прокачивается и т.п.
@invisibleinvisible83
@invisibleinvisible83 Год назад
Супер 😍 Спасибо, всех всех благ 🙏🏻❤️
@nikolay_tuzov
@nikolay_tuzov 2 года назад
Мои проекты: - Личный Telegram-канал: t.me/golanglessons 👾 - Golang Digest: t.me/golang_digest - регулярные подборки интересных материалов по Go. - Подкаст по Go: tuzov.link/gogetpodcast1 - в первом выпуске мы подробно обсуждаем дженерики.
@deniss5034
@deniss5034 Год назад
Спасибо за материал. Хотелось бы продолжение этой темы.
@nikolay_tuzov
@nikolay_tuzov Год назад
А что именно интересно увидеть на эту тему?
@smittychannel3252
@smittychannel3252 2 года назад
Ура новый видос!!...Симпатяга))
@valerypyzhyk5881
@valerypyzhyk5881 Год назад
Классные ролики. Большое спасибо
@user-iy7rm7dt8x
@user-iy7rm7dt8x Год назад
Крутое видео. Люблю видосы для начинающих, и по простому.
@zhanbolatnurutdin30
@zhanbolatnurutdin30 Год назад
Автору спасибо за интересный контент))) Хотел бы предложить, сделай пожалуйста видео про mutex и atomic в деталях)))
@nikolay_tuzov
@nikolay_tuzov Год назад
Да, такое обязательно будет)
@madbad1310
@madbad1310 2 года назад
Спасибо
@volodya-nrg
@volodya-nrg Год назад
молодчик, полезно было!
@svetlana4427
@svetlana4427 2 года назад
Мне кажется, что с веб камерой гораздо интереснее смотрится ролик
@user-yh8eb8bx6m
@user-yh8eb8bx6m Год назад
Все огонь)
@s1ovac308
@s1ovac308 Год назад
Николай, привет. Можешь записать видос по интерфейсам? Было очень познавательно и полезно!
@nikolay_tuzov
@nikolay_tuzov Год назад
Есть такие планы, хорошая тема )
@noob-mp7jo
@noob-mp7jo 10 месяцев назад
spasibo!
@FBTEN2501
@FBTEN2501 10 месяцев назад
На самом деле в Гошке уже давно были дженерики, но были они доступны только для мапов и слайсов, наконец-то завезли в общее пользование, и мы можем написать свои обобщенные структуры данных.
@user-dz5pt9ht1q
@user-dz5pt9ht1q Год назад
Ура, шаблоны из ++ завезли))
@nikolay_tuzov
@nikolay_tuzov Год назад
🤫
@AleksandrRasskazov
@AleksandrRasskazov 2 года назад
Продолжай!
@petrozavodsky
@petrozavodsky Год назад
видео было интересным и полезным
@user-vt4fr8pu3d
@user-vt4fr8pu3d Год назад
Спасибо!
@lDENRI
@lDENRI 2 года назад
Спасибо за видео. С веб камерой лучше.
@vladimireliseev7602
@vladimireliseev7602 Год назад
Привет! Можете ли посоветовать какие-нибудь юрез-френдли материалы по функциональному программированию на Go?
@user-yl8tj3jm9j
@user-yl8tj3jm9j 2 года назад
Довольно годно, а ты не мог бы на чем-то реальном продемонстрировать варианты применения дженериков? Напимер, работа с базой данных или с каким-нибудь статусом пользователя 🤔
@nikolay_tuzov
@nikolay_tuzov 2 года назад
Подумаю над этим, спасибо
@user-jd3sj6fl9q
@user-jd3sj6fl9q Год назад
Вы супер крутой!
@FBTEN2501
@FBTEN2501 10 месяцев назад
Гоферы знакомятся шаблонами :D Кстати, кто знает в чем принципиальная разница между шаблонами и дженериками?
@bobomurod
@bobomurod 2 года назад
Спасибо большое за видео, первый раз вижу как разбирают дженерики Пожалуйста, сделайте видео с детальным применением дженериков в разработке продукта, на пример, тудулист можно разработать без дженериков, а что нельзя?
@nikolay_tuzov
@nikolay_tuzov 2 года назад
Я считаю, что дженерики не изменят кардинально подходы к разработке. Местами станет сильно проще, это да. Поэтому нет смысла делать отдельный ролик про их использование в конкретном продукте. Но в будущих роликах я буду стараться их применять там, где они хорошо заходят.
@user-nu2wg3rx6n
@user-nu2wg3rx6n 2 года назад
@@nikolay_tuzov А на чем основанно это :Я считаю? Вопрос риторический. Любое сильное утверждение заведомо ложно. Это только потому, что дженерики в данной реализации практически полностью кастрированны и применимы только в ограниченных случаях, тк они не могут возращать другой тип.
@pavelivakin3735
@pavelivakin3735 Год назад
Спасибо! Очень полезно. я могу ошибаться но isContains звучит не по английски.
@ukrmapper
@ukrmapper 4 месяца назад
package main import "fmt" func main() { arr := []int{1, 2, 4, 8, 16, 32} res := Map(func(x int) int { return x * 2 }, arr) fmt.Println(res) // [2 4 8 16 32 64] res = Filter(func(x int) bool { return x > 5 }, arr) fmt.Println(res) // [8 16 32] } func Map[T any](lambda func(elements T) T, elements []T) (res []T) { for _, elem := range elements { res = append(res, lambda(elem)) } return } func Filter[T any](lambda func(elements T) bool, elements []T) (res []T) { for _, elem := range elements { if lambda(elem) { res = append(res, elem) } } return }
@matveiq
@matveiq 2 года назад
Rust-rust-rust. Only rust
@stefano_schmidt
@stefano_schmidt Год назад
Что ж за язык то такой, в котором нет настолько примитивных возможностей или структур, которые есть в каждом языке? Тернарник, ХешСет, Min,Max...
@l8l8l8l
@l8l8l8l Год назад
понаворотят всякой ерунды, потом все программы в дырах 😏
@matveiq
@matveiq 2 года назад
Rust учи, зачем go
@flamehowk
@flamehowk Год назад
СУПЕРДЖЕНЕРИК: fmt.Println(Max(int(x), int(y)))
Далее
Тест-драйв GitHub Copilot для GoLang
9:17
Обработка ошибок в go в 2023
15:59
Просмотров 1,7 тыс.
Полиморфизм на практике
10:42
Просмотров 177 тыс.