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

แชร์
ฝัง
  • เผยแพร่เมื่อ 19 ม.ค. 2025

ความคิดเห็น • 52

  • @nikolay_tuzov
    @nikolay_tuzov  2 ปีที่แล้ว +4

    ❤️ Если у вас есть желание поддержать развитие канала:
    www.patreon.com/tuzov
    boosty.to/nikolay.tuzov

    • @flamehowk
      @flamehowk ปีที่แล้ว

      1:27 А вот и не правильно...
      Мы ничего не будем копировать, мы просто вызов функции сделаем по-людски:
      fmt.Println(Max(int(x), int(y)))
      И всех проблем... и не нужно никакой огород городить.

  • @georgiy_kulagin
    @georgiy_kulagin 2 ปีที่แล้ว +23

    Спасибо за очередное отличное разжевывание материала! С вебкой добавляется больше интерактива и видео как-то живее что-ли смотрится.

  • @ИванЕвтушенко-ш5е
    @ИванЕвтушенко-ш5е 2 ปีที่แล้ว +13

    С лицом и эмоциями живее, ближе, больше ощущения, что объясняет человек рядом👍

  • @IvanIvan-v5t
    @IvanIvan-v5t 2 หลายเดือนก่อน +2

    очень понятно объясняешь

  • @vyacheslavbogomolov7970
    @vyacheslavbogomolov7970 2 ปีที่แล้ว +9

    Спасибо за проделанную работу!)

  • @trypophobia7497
    @trypophobia7497 2 ปีที่แล้ว +5

    Спасибо за урок, думаю, что для функции 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)))

  • @invisibleinvisible83
    @invisibleinvisible83 2 ปีที่แล้ว +2

    Супер 😍 Спасибо, всех всех благ 🙏🏻❤️

  • @yokai6693
    @yokai6693 2 ปีที่แล้ว +6

    Нештячек, Спасибище за оперативность!!

  • @ИльинИлья-т9д
    @ИльинИлья-т9д 2 ปีที่แล้ว +5

    Спасибо большое, записывай ещё! Отличное лицо!

  • @deniss5034
    @deniss5034 2 ปีที่แล้ว +3

    Спасибо за материал. Хотелось бы продолжение этой темы.

    • @nikolay_tuzov
      @nikolay_tuzov  2 ปีที่แล้ว

      А что именно интересно увидеть на эту тему?

  • @nikolay_tuzov
    @nikolay_tuzov  2 ปีที่แล้ว +6

    Мои проекты:
    - Личный Telegram-канал: t.me/golanglessons 👾
    - Golang Digest: t.me/golang_digest - регулярные подборки интересных материалов по Go.
    - Подкаст по Go: tuzov.link/gogetpodcast1 - в первом выпуске мы подробно обсуждаем дженерики.

  • @damir8847
    @damir8847 2 ปีที่แล้ว +5

    Все круто, спасибо! Думаю, с веб-камерой лучше, плюс личный бренд прокачивается и т.п.

  • @smittychannel3252
    @smittychannel3252 2 ปีที่แล้ว +4

    Ура новый видос!!...Симпатяга))

  • @Андрюхаслазерки
    @Андрюхаслазерки 2 ปีที่แล้ว +1

    Крутое видео. Люблю видосы для начинающих, и по простому.

  • @valerypyzhyk5881
    @valerypyzhyk5881 2 ปีที่แล้ว

    Классные ролики. Большое спасибо

  • @zhanbolatnurutdin30
    @zhanbolatnurutdin30 2 ปีที่แล้ว +4

    Автору спасибо за интересный контент))) Хотел бы предложить, сделай пожалуйста видео про mutex и atomic в деталях)))

    • @nikolay_tuzov
      @nikolay_tuzov  2 ปีที่แล้ว

      Да, такое обязательно будет)

  • @madbad1310
    @madbad1310 2 ปีที่แล้ว +3

    Спасибо

  • @ВладимирАстраханцев
    @ВладимирАстраханцев ปีที่แล้ว

    Все огонь)

  • @volodya-nrg
    @volodya-nrg 2 ปีที่แล้ว

    молодчик, полезно было!

  • @Ordinary_man2049
    @Ordinary_man2049 27 วันที่ผ่านมา

    5:03 почему вывелись х и у, если в теле функции условие x == y не прошло? Должно было вывестись только y. Похоже на то, что код все-таки не скомпилировался и мы получили вывод последней удачной компиляции. Или я что-то не понял?
    6:06 то же самое.

  • @AleksandrRasskazov
    @AleksandrRasskazov 2 ปีที่แล้ว +2

    Продолжай!

  • @МаксимМалофеев-п3ы
    @МаксимМалофеев-п3ы 2 ปีที่แล้ว

    Спасибо!

  • @s1ovac308
    @s1ovac308 2 ปีที่แล้ว +3

    Николай, привет.
    Можешь записать видос по интерфейсам?
    Было очень познавательно и полезно!

    • @nikolay_tuzov
      @nikolay_tuzov  2 ปีที่แล้ว

      Есть такие планы, хорошая тема )

  • @petrozavodsky
    @petrozavodsky 2 ปีที่แล้ว

    видео было интересным и полезным

  • @yakwilik
    @yakwilik ปีที่แล้ว

    На самом деле в Гошке уже давно были дженерики, но были они доступны только для мапов и слайсов, наконец-то завезли в общее пользование, и мы можем написать свои обобщенные структуры данных.

  • @noob-mp7jo
    @noob-mp7jo ปีที่แล้ว

    spasibo!

  • @lDENRI
    @lDENRI 2 ปีที่แล้ว +1

    Спасибо за видео. С веб камерой лучше.

  • @utang-ml
    @utang-ml ปีที่แล้ว +2

    Ура, шаблоны из ++ завезли))

  • @svetlana4427
    @svetlana4427 2 ปีที่แล้ว +1

    Мне кажется, что с веб камерой гораздо интереснее смотрится ролик

  • @ДавидВартанян-й8ч
    @ДавидВартанян-й8ч 2 ปีที่แล้ว +2

    Довольно годно, а ты не мог бы на чем-то реальном продемонстрировать варианты применения дженериков? Напимер, работа с базой данных или с каким-нибудь статусом пользователя 🤔

    • @nikolay_tuzov
      @nikolay_tuzov  2 ปีที่แล้ว

      Подумаю над этим, спасибо

  • @bobomurod
    @bobomurod 2 ปีที่แล้ว +3

    Спасибо большое за видео, первый раз вижу как разбирают дженерики
    Пожалуйста, сделайте видео с детальным применением дженериков в разработке продукта, на пример, тудулист можно разработать без дженериков, а что нельзя?

    • @nikolay_tuzov
      @nikolay_tuzov  2 ปีที่แล้ว +4

      Я считаю, что дженерики не изменят кардинально подходы к разработке. Местами станет сильно проще, это да.
      Поэтому нет смысла делать отдельный ролик про их использование в конкретном продукте.
      Но в будущих роликах я буду стараться их применять там, где они хорошо заходят.

    • @СергейИванов-ш6ц5с
      @СергейИванов-ш6ц5с 2 ปีที่แล้ว

      @@nikolay_tuzov А на чем основанно это :Я считаю? Вопрос риторический. Любое сильное утверждение заведомо ложно. Это только потому, что дженерики в данной реализации практически полностью кастрированны и применимы только в ограниченных случаях, тк они не могут возращать другой тип.

  • @АртемРогозин-д5ш
    @АртемРогозин-д5ш ปีที่แล้ว

    Вы супер крутой!

  • @vladimireliseev7602
    @vladimireliseev7602 2 ปีที่แล้ว

    Привет!
    Можете ли посоветовать какие-нибудь юрез-френдли материалы по функциональному программированию на Go?

  • @yakwilik
    @yakwilik ปีที่แล้ว

    Гоферы знакомятся шаблонами :D
    Кстати, кто знает в чем принципиальная разница между шаблонами и дженериками?

  • @pavelivakin3735
    @pavelivakin3735 2 ปีที่แล้ว +1

    Спасибо! Очень полезно. я могу ошибаться но isContains звучит не по английски.

  • @MrWHITEBIRCH
    @MrWHITEBIRCH 4 หลายเดือนก่อน

    Павел Деревянко здорового человека

  • @turalaliyev1764
    @turalaliyev1764 6 หลายเดือนก่อน

    а дженерик классы ?

  • @ukrmapper
    @ukrmapper ปีที่แล้ว

    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
    }

  • @l8l8l8l
    @l8l8l8l 2 ปีที่แล้ว +1

    понаворотят всякой ерунды, потом все программы в дырах 😏

  • @stefano_schmidt
    @stefano_schmidt ปีที่แล้ว

    Что ж за язык то такой, в котором нет настолько примитивных возможностей или структур, которые есть в каждом языке?
    Тернарник, ХешСет, Min,Max...

  • @maria_golubev
    @maria_golubev 2 ปีที่แล้ว

    Rust-rust-rust. Only rust

  • @maria_golubev
    @maria_golubev 2 ปีที่แล้ว

    Rust учи, зачем go

  • @flamehowk
    @flamehowk ปีที่แล้ว

    СУПЕРДЖЕНЕРИК:
    fmt.Println(Max(int(x), int(y)))