Изучаем Go. Структуры в Go. Программирование на Go #7

Поділитися
Вставка
  • Опубліковано 1 січ 2025

КОМЕНТАРІ •

  • @BeGeek101
    @BeGeek101  5 років тому

    Разбор домашнего задания - boosty.to/begeek

  • @darkmatiz
    @darkmatiz 4 роки тому +7

    Из полезного - тяжелые структуры лучше выводить fmt.Print("%+v
    ", struct) - нагляднее
    И довольно важная ошибка, инициализация через new() создает сразу указатель на объект, а просто через var - объект

    • @DJ-lp6jr
      @DJ-lp6jr 4 роки тому

      Тож заметил. За "%+v" спасибо! Правда, через Print не получилось, сделал через Sprintf.

    • @stanislavlalazaryan
      @stanislavlalazaryan Рік тому

      подскажите, на практике через new () инициализировать лучше ? нежели делать объект как на видео,?

    • @darkmatiz
      @darkmatiz Рік тому

      @@stanislavlalazaryan это ситуативная вещь. Иногда нам нужен именно nil, т.е. не инициализированный указатель. Но для краткости ответа скажу что "да", используйте инициализацию через new, чтобы избежать неожиданностей.

    • @stanislavlalazaryan
      @stanislavlalazaryan Рік тому

      @@darkmatiz Ясно, Спасибо за разъяснения

  • @EvgenySamsung
    @EvgenySamsung 4 роки тому +8

    вот этот вывод, который демонстрировался: "{[{1 100} {2 101} {3 102}]}" не из этого примера, попробуйте всё, что в этом уроке перепечатать еще раз и вы не получите такого результата. Нужно внести сюда правки, иначе в заблуждение ролик вводит конкретно. Чтобы сделать такого рода вывод, - нужна другая структура:
    type customStruct struct {
    Markets []struct{
    Name string
    Price int
    }
    }

    • @BeGeek101
      @BeGeek101  4 роки тому

      не понял
      только что глянул видео, там такая же структура под названием info
      или я не понял коммента =(

    • @DJ-lp6jr
      @DJ-lp6jr 4 роки тому +1

      @@BeGeek101 если в Name вместо типа string засунуть структуру status, как вы делаете в видео, то анмаршал для 'name' пройдет неудачно. Сам с этим столкнулся только что.

    • @dronihash
      @dronihash 4 роки тому +1

      спс вам всем...учу с нуля....лицо уже упало перед монитором ибо упорно получалось
      0 {} 100
      1 {} 101
      2 {} 102
      блять, аллилуя

    • @Honestvideo
      @Honestvideo 3 роки тому

      @@dronihash у вас неверный вывод. Комментатор сверху подсказал что нужно сделать, чтобы вывод был корректный.

    • @Honestvideo
      @Honestvideo 3 роки тому

      Спасибо вам, вы правы. Имена действительно если с типом стринг только выведутся. С типом другом структуры выведутся просто {} указывающие на другую структуру.

  • @ЕвгенийПронин-ы9э
    @ЕвгенийПронин-ы9э 4 роки тому +1

    Так регистр имени структуры не важен при парсинге? 4:26 начинается с большой буквы Markets а в json он с маленькой. Или там пофигу что написано в json ? Хоть другое слово

  • @decay9984
    @decay9984 Рік тому

    Спасибо, очень интересно и полезно!

  • @last2636
    @last2636 2 роки тому

    спасибо за понятное объяснение)

  • @АсяТ-ф7н
    @АсяТ-ф7н 4 роки тому +1

    А про интерфейс будет видео ? Очень нравиться как вы объясняете )

  • @Ufopvl
    @Ufopvl 3 роки тому +1

    А разве для разбора JSON не нужно указывать теги (подсказки) если в самом JSON они написаны с маленькой буквы, а в структуре должны быть с большой(Чтобы экспортились)?
    Типа вот так:
    type Mystruct struct {
    Name string `json:"name"`
    Price int `json:"price"`
    }
    Например тут это указано:
    gobyexample.com/json
    Only exported fields will be encoded/decoded in JSON. Fields must start with capital letters to be exported.
    А более подробно про структурные теги тут www.digitalocean.com/community/tutorials/how-to-use-struct-tags-in-go-ru

  • @kensaitakeso
    @kensaitakeso 3 роки тому

    онлайн ресурсы трансформируют json в структуры как-то по другому
    например
    {"widget": {
    "debug": "on",
    "window": {
    "title": "Sample Konfabulator Widget",
    "name": "main_window",
    "width": 500,
    "height": 500
    }
    }}
    превращается в
    type AutoGenerated struct {
    Widget struct {
    Debug string `json:"debug"`
    Window struct {
    Title string `json:"title"`
    Name string `json:"name"`
    Width int `json:"width"`
    Height int `json:"height"`
    } `json:"window"`
    } `json:"widget"`
    }
    так как правильно\принято в Го?

    • @BeGeek101
      @BeGeek101  3 роки тому

      не понял вопроса, но выглядит правильно. Можно пойти разными путями, в зависимости от того, что требуется. Можно и через интерфейсы

    • @kensaitakeso
      @kensaitakeso 3 роки тому

      @@BeGeek101 я Го только начал учить по-этому не знаю как правильно. я просто к тому что у тебя в видео показан другой вид структуры, а онлайн сервисы генерит структуру по другому. но как я понял оба варианта работают, да?

  • @АсяТ-ф7н
    @АсяТ-ф7н 4 роки тому +1

    Я ноль в программировании. И я не понимаю почему в срезе строка Name имеет структурный тип status { Name string}. Мы обращаемся к price как infos.Markets[i].Price, тогда мы должны обращаться к Name как infos.Markets[i].Name.Name должно быть по логике??? Если не прописывать второй Name то по логике должно выводиться на экрать так :
    0 {1} 100
    1 {2} 101
    2 {3} 102

    • @folderRU
      @folderRU Рік тому

      потому что структура status инкапсулировалась в другую структуру. На самом деле можно писать как вы сказали, предложенный вариант в видео - это такой синтаксический сахар

  • @mitagmio
    @mitagmio 5 років тому

    Афигенная магия!

  • @mk-xs1cv
    @mk-xs1cv 3 роки тому

    И где искать домашку в ВК????

  • @mlr__roal_6867
    @mlr__roal_6867 Рік тому

    Выворот мозга

  • @stanislaus6261
    @stanislaus6261 4 роки тому

    если правильно понял, то работа с json и бд ведется по принципу codefirst? или не правильно я понял урок?)

    • @BeGeek101
      @BeGeek101  4 роки тому

      не знаю что такое codefirst )

  • @stanislav3827
    @stanislav3827 5 років тому

    Интересно а как парсить json который заранее не известен

    • @BeGeek101
      @BeGeek101  5 років тому

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

    • @vp_arth
      @vp_arth 10 місяців тому

      Ещё как может быть такая ситуация. Ну или придётся в неудобную структуру данные конвертировать, если не умеешь со свободным словарём работать. вроде []{name string, value string}

    • @jurijskobecs2803
      @jurijskobecs2803 3 місяці тому

      @@vp_arthможешь любую структуру запихнуть в map[string]interface{}

  • @mitagmio
    @mitagmio 5 років тому

    Было бы интересно написать простенького чат бота в для телеграмм в сравнении на python(Flask) и на GO !!! Я думаю всем будет интересно.

    • @BeGeek101
      @BeGeek101  5 років тому +2

      будет в дальнейшем. Есть предложение параллельно делать уроки по питону и заодно сравнивать как оно выглядит на питоне и как на ГО

    • @mitagmio
      @mitagmio 5 років тому

      @@BeGeek101 интересненько)

  • @aibekzhorabek3043
    @aibekzhorabek3043 3 роки тому

    А зачем нам структуры? какая та сложная тема, можем ли мы обойтись без него ?
    Где его использовать ?

    • @BeGeek101
      @BeGeek101  3 роки тому

      в Go нельзя без структур обойтись, точнее можно, но так никто не пишет =)

  • @fluffis7908
    @fluffis7908 3 роки тому

    Почему так сложнооо???)

  • @dikra2887
    @dikra2887 3 роки тому

    с джейсоном как то сложно))

  • @antnzr656
    @antnzr656 4 роки тому

    Не очень удобно когда переменные name: "1,,,,2,3,4" если это name то называй его какой нибудь стрингой, а то кашеобразно получается, урок с картами там тоже самое ключ стринга "1" и в консоли то ли это индекс то ли это ключ. А так спасибо за уроки.

    • @BeGeek101
      @BeGeek101  4 роки тому

      ну, извините) как получилось

  • @nnoorrookk
    @nnoorrookk 4 роки тому

    я тут:)

    • @BeGeek101
      @BeGeek101  4 роки тому

      получается? где доники? )