Bogdan
у меня проблема именно с массивом
Maks
Я делал недавно
Bogdan
var n []jsonStructure
Bogdan
вот моё объявление
Bogdan
тут просто n.Id не сработает)
Maks
type ArrayJson struct{ Objects []JsonStructure }
Maks
И в этот ArrayJson обьект анмаршалинг
Maks
https://stackoverflow.com/questions/53538123/how-to-parse-json-array-struct
Maks
Или вот тут посмотри
𝕌ℕ𝔼𝕏ℙ𝔼ℂ𝕋𝔼𝔻
var n []jsonStructure
Прежде чем задавать вопрос, отправь весь код сюда, так проще будет помочь.
Bogdan
https://play.golang.org/p/2lHSjtTIx1O
Bogdan
djn
Bogdan
вот
Bogdan
только url нерабочая
Bogdan
выше висит json
Bogdan
var str
𝕌ℕ𝔼𝕏ℙ𝔼ℂ𝕋𝔼𝔻
только url нерабочая
Так если у тебя url не рабочий, как ты проверяешь код?
Bogdan
Ну , он у вас работать не будет)
Bogdan
У меня url рабочая Вам я выше засунул тестовый json
Bogdan
ну или же проще вопрос
Bogdan
как мне сравнить два массива в go?) Ну, два json'a
Bogdan
потому что, если мне память не изменяет, то массивы через == и != нельзя сравнить
Alexander
есть reflect.DeepEqual, но это для тестов по сути
Alexander
а так вручную писать, может кто кодогенераторы для этого написал
Alexander
есть reflect.DeepEqual, но это для тестов по сути
ну опять же, если скорость устраивает, то почему бы и нет
Bogdan
https://play.golang.org/p/2lHSjtTIx1O
ну json'ы такого типа, как тут в str лежит
Null
Простое объяснение интерфейсов на Golang https://nuancesprog.ru/p/14201/ @Golang_google
Maks
Вообще нужно просто понимать что такое интерфейс. Это просто контракт общения. Во многих языках интерфейс нужно имплементить что бы метод реализовывал тот или иной интерфейс. Но при компиляции это все схлопывается. А нужен он только для компилятора, интерпритатора и среды разработки. Так они понимают и дают понять ращработчику, что метод должен реализовывать тот или иной интерфейс(методы). В го решили отказаться от такого подхода, и сделать интерфейс только для описания как должна работать программа, а объект считается реализатором интерфейса в том случае, если там просто есть метод который совпадает с контрактом. В итоге по сравнению с другими языками суть одна и та же, и результат после компиляции один и тот же плюс минус. Просто меньше кода немного
Almas
"А нужен он только для компилятора, интерпритатора и среды разработки" тут я не согласен, я рассматривают это скорее как контракт между разработчиками к примеру при использовании сторонних зависимостей, завязываешься на интерфейс и уже без разницы какая имплементация идет, главное нужные методы есть и работают согласно контракту. к примеру многострадальный логгер(я немножко с пыхи) есть интерфейс логгера, и при работе с ним просто завязываешься на интерфейс, а на детальную реализацию уже без разницы, в файл будет писать или по апи на сторонний сервис ну и получается реализацию как угодно можно менять главное чтобы контракт сохранялся(аргументы, их типы и возвращаемый тип)
e2
Привет. Не можете подсказать что в gin является аналогом phpшного $_SERVER["REMOTE_ PORT"]?
Almas
c.ClientIP() ?
e2
c.ClientIP() ?
Там айпи
e2
А нужен порт
e2
Исправил, не так имя функции написал, сорри)
e2
c.ClientIP() ?
Потому что это нашёл, а вот как порт получить - нет
Almas
а он разве не на одном конкретно порту запускается?
Maks
"А нужен он только для компилятора, интерпритатора и среды разработки" тут я не согласен, я рассматривают это скорее как контракт между разработчиками к примеру при использовании сторонних зависимостей, завязываешься на интерфейс и уже без разницы какая имплементация идет, главное нужные методы есть и работают согласно контракту. к примеру многострадальный логгер(я немножко с пыхи) есть интерфейс логгера, и при работе с ним просто завязываешься на интерфейс, а на детальную реализацию уже без разницы, в файл будет писать или по апи на сторонний сервис ну и получается реализацию как угодно можно менять главное чтобы контракт сохранялся(аргументы, их типы и возвращаемый тип)
Я о том как он реализуется в языке. В одном языке ты должен в классе явно указать что он реализует конкретный интерфейс и компилятор/иде/интерпретатор проверяют что у тебя этот интерфейс реализован, и при передаче этого объекта туда где должен быть этот интерфейс - всё пройдет. В го просто сказали что писать implement interface не нужно, достаточно просто реализовать метод. В остальном оно работает так же. То есть под капотом это одно и тоже.
Maks
кстати
Maks
В голанге же нет генераторов?
Maks
или есть?
>_
>_
Привет, какая из этих книг лучше зайдет если с 0 учишь?
Maks
2 или 3 вверху. Лучше вторая нверное.
Almas
В голанге же нет генераторов?
нету, можно реализовать самому, на каналах и горутине например, а так yield нема
Maks
Привет, какая из этих книг лучше зайдет если с 0 учишь?
Если есть опыт на других языках то лучше просто сядь и начни писать
Maks
нету, можно реализовать самому, на каналах и горутине например, а так yield нема
Жаль конечно)))) В шарпе есть, в пыхе есть, а в го нет)))))))))))0
Almas
Нужен порт юзера
ну он же не сможет со своего порта 8000 приконнектиться к твоему 8080? типа если ты запускаешь g.Run(":8080") то ты знаешь что порт 8080 или я чего то не понимаю?
Almas
Привет, какая из этих книг лучше зайдет если с 0 учишь?
я по их туториалу прошелся, но там прям вдумчиво сидеть надо https://www.youtube.com/watch?v=YS4e4q9oBaU больше ясность внесло это видео
Almas
тогда сорри, у меня опыта пока маловато
Maks
Если ты делаешь бэкенд, то тебе должно быть плевать абсолютно на порт юзера по которому он к тебе приконектился. Ты же не фронт пилишь.
e2
а зачем тебе порт юзера?
Для стороннего апи нужно передать порт юзера
Maks
Супер странный кейс.
e2
Супер странный кейс.
Сам поражаюсь но стоит такая задача и в пыхе легко сделать в го что-то не могу найти а нужно именно на го 😂
Shaplin
Ребят, кто-нибудь работал с casbin? Как вы на фронт отдавали разрешения юзера?
e2
Воровать кредитные средства конечно же
e2
Да, и сравнивать
Alexander
https://pkg.go.dev/net#IPConn.RemoteAddr
Alexander
Короче надо получить как-то из нижележащие tcp соединение, а потом попробовать привести к типу выше и если ок, можно вызвать метод выше.
Almas
https://pkg.go.dev/net/http#Request тип Request тоже содержит RemoteAddr
Almas
а http.Request получить будет легче думаю. в любом случае, пошариться по коду с дебаггером
Alexander
В голанге же нет генераторов?
И слава богу нет. Нахрен этот синтаксический сахар
Шипулин
3 и 4 старые, насколько я помню 2016 год
Alexander
Интересно всё-таки зачем порт юзера нужен
>_
3 и 4 старые, насколько я помню 2016 год
Думаешь неактуальные уже?
Emil
3 тут все восхваляют
Шипулин
В книжке с женщиной неактуально, некоторые листинги программ пишут ошибку при запуске в goland-е (использую go 1.17)
Шипулин
Ставь goland + go 1.17 - пробуй запустить и увидишь
Шипулин
3 тут все восхваляют
Не пробовал, ничего сказать не могу
Anton
Если есть опыт программирования, я бы порекомендовал эту. Очень по программистски написана. И ничего супер сложного там нет
la4z
У нас на проекте возникла проблема
la4z
Нам необходим чат для всех платформ, с поддержкой голосовых сообщений