Юра (Юрий Александрович)
Либо объявить интерфейс, в котором объявить метод SetString(string, int), и принимать на вход первый параметр этого типа
Grigory
я просто не очень сильно знаком с принципами замыкания в го
Евгений
Всем привет может, кто подскажет, как можно в библиотеке decimal удалить незначащие нули? А достаточно к string их привести и все
Andrey
Ребят, есть способ проще вынимать из ассоциативного массива значение как строку?
Andrey
Ребят, есть способ проще вынимать из ассоциативного массива значение как строку?
ну там значение interface, тебе в любом случае надо проверять строка там или не строка, а тут тебе в любом случае строка вернется, даже если в массиве не строка, так что видимо нет
Alexander
ну вообще код должен выглядеть так: uid, ok := document["user_id"] if !ok{ return ... } uidStr, ok := uid.(string) if !ok{ return ... } println(uidStr)// что-то с тем что тебе нужно в виде строки
Andrey
еще могу предположить что так сделано, что бы в массив можно было складывать что угодно, и это не просто куда-то пропадало а превращалось в строку
Alexander
если документ из парсинга жсона, то разбери как жсон парсится в структуры
Andrey
Да из парсинга json
Andrey
через json.Unmarshal
Vladislav
Да из парсинга json
А в чем проблема сразу в структуру?
Andrey
byteValue, _ := ioutil.ReadAll(req.Body) var result map[string]interface{} json.Unmarshal([]byte(byteValue), &result)
Andrey
вроде не всякий json в структуру превратиться, может быть проблема
Andrey
+ я не хочу привязываться жестко и прописывать ее
Andrey
вдруг там поле поменяется которое я не использую
Andrey
это разные типы, это нарочно так сделано, на этом свойстве например работают ошибки, еще это свойсво используется для енумов, по этому если хочешь что бы так работало, объявляй переменную тоже как крейзи мап
Alexander
но вообще есть, например, такое: https://github.com/tidwall/gjson
Alexander
если твой случай это какие-то кастомные джейсоны или нужна пара полей из огромного
Andrey
Я пока учусь и не хочу вообще внешние либы
Юра (Юрий Александрович)
Типы, одинаковые по структуре, но разные по названию, считаются разными. Т.е. это не синонимы, не алиасы, это именно разные типы.
Alexander
не вижу проблем, в чем в сущности отличие от стандартных? тут как раз когда серьезный проект вопрос в стабильности и тд, потому нестандартные серьезно будут проверяться
Beta
Ребят, как интегрировать один проект в другой, допустим у меня монолит, но есть отдельно написанный чат и я хочу добавить его в монолит
Илья
берешь и добавляешь
Beta
Сильно
Andrey
Ребят, как интегрировать один проект в другой, допустим у меня монолит, но есть отдельно написанный чат и я хочу добавить его в монолит
способов миллион, можешь чат проксировать своим монолитом, можешь клиентом подключатся к монолиту и чату отдельно, можешь скопировать код из чата в монолит, можешь скопировать код монолита в чат
Andrey
ладно про миллион я утрирую, но я бы советовал тебе сделать так как считаешь нужным ) мы не против
Emin Zalaev
а каким нибудь брокером связать нельзя?
Emin Zalaev
монолит аля не микросервис а макро получается
Beta
Вот как подключиться чатом к монолиту
Beta
Или что такое брокер
Юра (Юрий Александрович)
Вот как подключиться чатом к монолиту
Как подключиться кухонным комбайном к посудомоечной машине?
Andrey
Вот как подключиться чатом к монолиту
а какой у чата интерфейс внешний? gRPC, может http json?
Andrey
Http json
если тебе монолитом не надо никак сообщения чата обрабатывать можешь погуглить golang http proxy
Юра (Юрий Александрович)
Http json
как вообще должны быть связаны монолит с чатом? Что нужно чату от монолита или что нужно монолиту от чата?
Andrey
или типа того
Alexander
document["type"].(string)
ну да, нахуй проверять есть там такой ключ или нет
Andrey
а вообще контекста очень мало по вопросу чата и монолита что бы какие-то дельные советы дать
Andrey
ну да, нахуй проверять есть там такой ключ или нет
а что fmt.Sprintf("%v", document["user_id"]) в панику не выпадет ?
Andrey
Не выпадает, согласен)
Alexander
а что fmt.Sprintf("%v", document["user_id"]) в панику не выпадет ?
так и не будет, и там у тебя не будет. interface{}{} вернется
Andrey
Осознал
Alexander
просто ты даже не словишь, что жсон поменялся или пришел не тот
Andrey
Не выпадает, согласен)
эх я сразу пытался это объяснить, это моя проблема коммуникации (
Andrey
Ребят, а как читать если внутри map еще interface Пробовал по всякому : document["body"]["data"]["positions"] document["body"].data["positions"] И еще куча комбинаций, не проходит :D
Andrey
Ребят, а как читать если внутри map еще interface Пробовал по всякому : document["body"]["data"]["positions"] document["body"].data["positions"] И еще куча комбинаций, не проходит :D
дата это [string]interface т.е. data[''] возвращает interface{} и его надо закастить в какой-то тип что бы у него что-то спросить
Alexander
и все это в разных строках. но эт п) советую один из вариантов еще раз: 1. парсить в структуры 2. использовать либу как выше кидал
Andrey
document["body"].(map[string]interface{})["data"],(map[string]interface{})["positions"] возможно как-то так но это не точно надо тостить мне влом
Andrey
но вообще это конечно говнокод, такое точно никакое ревью не пройдет )
Alexander
можешь только нужные поля
Andrey
Но чтобы парсить структуру ее надо же руками всю описать, этож влом капец
не обязательно всю, можно указать только нужные поля
Alexander
либо погугли golang json online
Andrey
Принял, спасибо за советы парни, я думал все структур описывать иначе паника будет при касте
Andrey
если только мои поля то фигня
Andrey
Вспомнил почему делал через анонимный интерфейс, мне на вход приходят вообще разные JSON с разной структурой и чтобы понять как его парсить надо поле прочитать сначала
Andrey
Сначало читать в анонимку а потом перечитывать в нужную структуру выглядит как гавнокод?)
Andrey
Ну приходят разные json с разным набором полей вообще
Andrey
общее только что есть поле type
Andrey
где написано что это
Andrey
надо сначала прочитать поле type понять что это и потом преобразовать к нужной структуре получается
Andrey
есть rawjson или типа того поле, читаешь в структуру где есть type и этот raw json, и в зависимости от того какой type маршалишь уже оставшийся json
Andrey
Пока не понял, буду пока 2 раза вычитывать. @AndreyChernov подскажи лучше почему анмайшал не хочет вычитывать positions с таким типом, что не так?
Andrey
Andrey
Type читает positions пустой массив
Andrey
ты мне лайк выше поставил ) потому что он с маленькой буквы
Alexander
с маленькой буквы у тебя
Andrey