Изучаем Golang. Урок 6. Основы. Интерфейсы

แชร์
ฝัง
  • เผยแพร่เมื่อ 27 ต.ค. 2024

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

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

    С радостью хочу вам представить, что я запускаю курс “Начальная подготовка” по языку Golang. Курс как для совсем начинающих в сфере IT, так и для тех, кто хочет просто изучить язык Go.
    Курс доступен в 3 вариациях:
    1. Онлайн курс с лекциями, заданиями, чатом менторской поддержкой.
    2. Полный видеокурс
    3. Отдельные блоки с лекциями
    Больше обо мне и курсах можно прочитать здесь:
    bit.ly/3XK1oZp
    Записаться на курс можно вот тут:
    bit.ly/406V3IY
    А видео курс тут:
    bit.ly/406VgMg
    А отдельные блоки с видео тут:
    bit.ly/3Rfmhcj
    Больше информации есть в ролике на ютубе:
    th-cam.com/video/E0b0dmwf-6c/w-d-xo.html
    На все вопросы могу ответить в Телеграм группе канала и в личных сообщениях.

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

    Нравится то что в голосе прям звучит бережность и уважение по отношению к тем кто учится, просматривая ролики) Спасибо автору, очень располагающий и раскрепощающий тон)

  • @VentelMr
    @VentelMr 3 ปีที่แล้ว +10

    Лучше не расскажешь!!! Супер. Насколько подробно и качествено! Жду продолжения

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

    Вот народ скажите те кто впервые в программировании вы тоже темы не сразу усваиваете а тратите по 2-3 дня(посмотрев еще ролики других авторов почитав статьи попрактиковатся решая задания), а то у меня появилось ощущения что я походу недалекий. Автору канала отдельно большое спасибо за такие качественные уроки как по мне лучшая подача информации на ютубе

    • @ЕвгенийБледных-у1я
      @ЕвгенийБледных-у1я 2 ปีที่แล้ว +1

      Мне кажется с нуля заходить в этот язык довольно сложно. Здесь нужно неплохо разбираться в указателях из С и неплохо бы понимать и использовать принципы ООП из других языков

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

      уже 4 месяца пршло с твоего комента, как ситуация ? - каким сейчас будет твой ответ, на заданый тобой вопрос ?

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

      Ты не одинок дружище))) Это совершенно нормально, такая инфа не сразу усваивается мозгом, который до этого ни с чем подобным не сталкивался

  • @squeezyfranky620
    @squeezyfranky620 ปีที่แล้ว +7

    Уф, для меня это самоя сложная тема. Спасибо за труд! Полюбил Go во время прохождения этого плейлиста:)

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

      рад, что положительно повлиял на ваше отношение к языку :)

  • @АпостолВсевышнего
    @АпостолВсевышнего 3 ปีที่แล้ว +4

    Респект... Долго глядел на го... и проходил мимо... Убедил, стоящая тема... Видосы СУПЕР, подача материала - ИДЕАЛЬНАЯ....

    • @TheArtofDevelopment
      @TheArtofDevelopment  3 ปีที่แล้ว +1

      рад что понравилось! спасибо за фидбек!

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

    Нравится курс. В этом видео - хороший пример мутабельности / иммутабельности

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

    * - это указатель
    & - это ссылка на адрес в памяти

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

    гениальный курс по гениальному языку, особенно это понимаешь после опыта на C++, Python и Java. мне кажется, автору можно свой курс создавать и продвигать, спрос будет гарантирован :)

  • @delay_gryaz_chisto
    @delay_gryaz_chisto 3 ปีที่แล้ว +10

    круто. нужно будет пересмотреть еще пару раз моменты про присвоение.
    было бы здорово еще увидеть примеры использования в сигнатуре. типо функция ожидает интерфейс, и мы передаем туда реализацию/или ссылку реализации или ...
    спасибо большое за контент! сохранил себе )

    • @TheArtofDevelopment
      @TheArtofDevelopment  3 ปีที่แล้ว +1

      Спасибо за фидбек, учту в будущем про примеры!

  • @volodymyrshkarbatovskyi4570
    @volodymyrshkarbatovskyi4570 3 ปีที่แล้ว +8

    Супер подача! Спасибо большое! Возможно было бы не плохо в будущем добавить больше того c чем чаще сталкивается в роботе Golang Developer!

    • @TheArtofDevelopment
      @TheArtofDevelopment  3 ปีที่แล้ว +4

      Спасибо за фидбек! Это будет в следующих уроках, когда уйдем от основ и начнем реализовывать веб приложение.

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

      @@TheArtofDevelopment Супер! Очень жду! Спасибо!!!

  • @antonrakov5579
    @antonrakov5579 3 ปีที่แล้ว +1

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

  • @misteranderson6058
    @misteranderson6058 ปีที่แล้ว +8

    Так и не понял зачем нужны интерфейсы и где используются

  • @maximg.7765
    @maximg.7765 2 ปีที่แล้ว +3

    Круто, у нас как раз используется map[string]interface. Спасибо!

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

    21:04 Переменная nil и в то же время не nil. Тут уже про квантовую суперпозицию говорится! Я в восторге

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

    Все супер, но дополню один момент, с которым можно столкнуться. При переключение типов надо делать switch v := a.(type) , иначе в логике go не даст использовать перменную a, например, в операции сложения, даже если она попадает в case int: а вот v уже будет приведенного типа в нужном case

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

    Спасибо Автор! только на твоем канале понял суть интерфейса!

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

    Курс огонь!
    Спасибо большое!
    Как-то даже неудобно давать какие-то советы, но, я бы добавил мелкие "домашние задания" по каждому из уроков и тогда этот плейлист реально можно продавать за неплохие деньги

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

    Как новичек, уже раз 5 пересматриваю видео про интерфейсы. Если вы их не понимаете, это норма. Доходит понимание постепенно, когда начинаешь мыслить не структурно, а абстрактно. Благодаря видео, хотяб уловил суть и смысл. Но этого видео будет мало и нужно больше видео, больше реальных примеров и больше терпения. Смотрите другие видео по интерфейсам, книгам и другим источникам от простых к уже более сложным вариантам обьяснений

    • @stanleypomogiti8633
      @stanleypomogiti8633 11 หลายเดือนก่อน

      Ну как у Вас с языком? На этом видео я настолько туплю, что у меня депрессия начинается уже...

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

    Спасибо Вам большое! Чувствую буду пересматривать еще не раз этот видосик =)

  • @КахарманБалтабаев-б2о
    @КахарманБалтабаев-б2о 2 ปีที่แล้ว +1

    Спасибо за урок!

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

    Просто красавчег!

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

    24:44 - в питоне не слабая типизация, а строгая. Но при этом она динамическая, то о чем ты говоришь относится именно к динамической типизации.

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

    лайк поставил, учусь = посмотрим, что будет у меня через 4 месяца

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

      Привет,расскажи как успехи?

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

    да, крутотень) ждем 3000 подписчиков. Лайк от СЕООНЛИ

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

    Спасибо, многое стало понятнее.

  • @ПавелВеткин-о6щ
    @ПавелВеткин-о6щ 2 ปีที่แล้ว +2

    Придумали костыль для ООП. Пойду обратно на С++ где все по-человечески (относительно GO)

  • @johnsmith-yk5vz
    @johnsmith-yk5vz ปีที่แล้ว +1

    спасибо, просто спасибо!)

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

    "Я выбираю ссылку на юзера, конечно же, а зачем мне выбирать юзера..."- прям бог обьяснений. Расскажи чем отличается выбор, как повлияет на память и т.д.

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

    Лучше принимать интерфейсы, а возвращать структуры. Получение интерфейсов даёт функции максимальную гибкость. При этом возвращение структуры даёт преимущества:
    - компилятор лучше оптимизирует код, когда знает конкретный тип возвращаемого значения;
    - для переменной конкретного типа может статически быть выделено место в стеке, в отличие от интерфейса, значение которого будет динамически размещено в куче;
    - другим разработчикам проще разбираться с кодом;
    - код, вызывающий вашу функцию, не будет делать type assertion возвращённого значения, неизбежное в случае возврата интерфейсом.

  • @ЕгорЯмутов
    @ЕгорЯмутов ปีที่แล้ว +1

    Спасибо большое!
    Не очень хорошо понял про нереализованность метода с указателем(6:30 где-то). Вообще интерфейс выглядит интересной, но не до конца понятной штуковиной)

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

    На 30 минуте на меня накричали. Расстроился и пошел спать

  • @artemnovikov8560
    @artemnovikov8560 3 ปีที่แล้ว +4

    а Вы можете сделать что-то типа домашнее задание?

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

      Давайте попробую сделать в одном из следующих уроках.

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

    Спасибо за уроки. Лучшие в ру сегменте. Но когда у тебя Java головного мозга (это я про себя), лично я офигеваю от такой реализации в языке (синтаксически).
    Пока только бегло осваиваю язык, но блин, в чем была проблема в синтаксисе указать, что структура реализует интерфейс, к примеру как с ключевым словом implements в Java или через двоеточие как в шарпе? Т.е. чтобы прям в структуре уже было понятно, какой интерфейс реализуется, а не полагаться на IDE. А если в коде 2000 строк, а мне его удаленно в VIM надо поправить? Как такое отлаживать? Пока понимания нет, ткните носом почему так, плз.

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

      залетайте в Телеграм группу, там такое обсуждаем

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

      потому что гошечка говорит "я не такая как все. я модная стильная молодёжная. у меня не будет этих ваших дедовских классов". а потом начинает крутиться вокруг да около как бы к структуре подвязать методы и прикрутить интерфейсы. а потом вводит дженерики. чую, что через год введёт и классы.

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

    Хорошая подача материала! Было бы не плохо хотябы пару примеров из жизни! И если есть возможность может давать задания для самостаятельного решения! А так в целом мне всё очень нравиться

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

      Я думаю сделать отдельную серию заданий в результате которых будет полноценное приложение.

    • @peekaboo9340
      @peekaboo9340 3 ปีที่แล้ว +1

      @@TheArtofDevelopment Это давольно не плохая идея! Буду ждать с не терпением! P.S. Если после твоих уроков устроюсь на работу. Обязательно получишь от меня фитбек в $ эквиваленте =) Так как не знаю как еще можно отблагадорить за такой контент!

    • @stanleypomogiti8633
      @stanleypomogiti8633 11 หลายเดือนก่อน

      @@peekaboo9340 устроился?

  • @mister-ace
    @mister-ace 3 ปีที่แล้ว +1

    var _ User = &user{} - это просто для того чтобы IDE подсказала что мы можем имплементировать, это ведь убирается потом?

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

    я вот что то не очень понял по последнему блоку
    var a interface{} = "jelly"
    fmt.printf(value, type) нам выдает 42 int
    делаем проверку
    a, ok := a.(int)
    выдает нам что 0 false нельзя изменить на инт
    а после делаем
    a = 42 что делает его типа инт???
    как так то

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

    Не понятный момент. Зачем здесь (27:02) приводить к типу string если hello это и так тип string?
    var a interface{} = "hello"
    fmt.Printf("(%v, %T)

    ", a, a) // (hello, string)
    s := a.(string)
    fmt.Println(s) // hello
    И ещё не понятный момент. Если в интерфейсе могут быть прописаны только сигнатуры методов, то как в него записалась строка hello?

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

      1. это сделано для демонстрации концепций использования типа интерфейс и проверки кастинга типов
      2. еще в го, interface{} можно использовать как "любой" тип

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

      @@TheArtofDevelopment Спасибо, а к чему строка присваевается в смысле если полей нет то где она?

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

      @@poaleell интерфейс это переменная с "любым" типом.

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

      @@TheArtofDevelopment Да, спасибо вроде разобрался. Меня вот этот код смутил
      type InterfaceHere interface {
      Sum() int
      }
      Я так понимаю, что здесь мы объявляем новый тип интерфейса InterfaceHere, причем не пустой.

  • @maharbalgimilkon8295
    @maharbalgimilkon8295 3 ปีที่แล้ว +1

    31:56 включите subtitles

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

    Он пытался. Но не объяснил. Новичок так и не поймет зачем ему интерфейс, если у стуртур итак работают методы без интерфейсов. ))) Но он пытался.

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

      согласен. уже которое видео подряд мало что понятно. такое ощущение, что просто переписывает код с листочка и проговаривает буквы которые пишет

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

      так и есть. переписываю код с листочка и читаю текст с суфлером.

    • @ШпакЭльдар
      @ШпакЭльдар 2 ปีที่แล้ว +1

      @@TheArtofDevelopment я без претензий, но тоже возникает вопрос из этого комментария. Использование интефейса как пустого типа это круто, и вполне понятно для чего это, однако не понимаю практической пользы от создания, грубо говоря, описания того, как структура будет работать. Используя интерфейс мы говорим что эта структура должна содержать следующие методы, тем самым предопределяем ее дальнейшее поведение. Но зачем мне указывать какой метод должна содержать структура, если я просто могу объявить метод для данной структуры, и все будет работать?

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

      @@ШпакЭльдар с языка снял. Тоже пытаюсь понять, зачем мне использовать интерфейсы, если и без них у меня все работает.

  • @дмитрийм-т1п
    @дмитрийм-т1п ปีที่แล้ว

    Буквы очень маленькие, плохо видно, и нету чистоты эксперимента - создали путаницу, вообще не видно чем вся эта мещанина кода лучше функции обертки?, боюсь это сожрет много процессорных секунд

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

    My LIKE = 500!

  • @НиколайЗаднепровский
    @НиколайЗаднепровский 2 ปีที่แล้ว +1

    false через о говорится

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

    Кровь из глаз. Вроде бы несложные идеи динамической типизации и интерфейсов(по-нормальному типов или набора сообщений на которые отвечают структуры) но сделаны они как-то максимально неудобно. Впечатление что перед дизайнерами языка ставилась цель отказаться от всех терминов используемых в ООП языках. Зачем? Почему? Дичь

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

      Выделяться чтобы, видимо. У меня в голове ассоциации с питоном помогают немного донести до себя информацию, потому структуры называю классами для себя. Так начинает проще даваться. Думаю, что и в среде разработчиков структуры называют классами и методы классов, чтобы лучше было понимать. Хотя и ошибаться могу.