Dmitriy
Дебагер тут бесполезен
Может вы не прочитали все мои сообщения, я тогда повторю вопрос, как получить дамп потоков и памяти в определённый момент времени, если есть дебагер то это делается просто, подскажите как без него сделать тоже самое
Sander
можно ли как-то задать type struct, чтоб работал с любим значением. а то я могу получить любые данные, поэтому точно типизировать не получиться. ``` type Language struct { Id int Name string Age string } func main() { text := `{"Id": 100, "Name": "Go", "Age": "24"}` bytes := []byte(text) var languages Language json.Unmarshal(bytes, &languages) ```
Mike
Void
Mike
Точнее это в си был void*
Sander
мне для го
Mike
Но я точно в доках на го видел надпись -- а вот это как void*
Sander
interface
Mike
Интерфейс это вообще про другое
Sander
понятно
Mike
Блин, Сандер, ну дочитай ты доку уже
Mike
Неделя почти прошла
Sander
какая неделя
Mike
Во, interface{}
Mike
Сорян, напиздел
Mike
Но как видишь это меньше минуты в гугле
Sander
использовал уже, но в моем случаи пока не получилось его правильно применить
Sander
о ней уже знал, я думал как-то иначе
Mike
Мб прокладку пора поменять?
Mike
))
Sander
cvjnhb
Sander
смотри
Sander
```type Node struct { Data interface{} } func main() { leaf := Node{Data: {lalal:1}}```
Sander
все равно надо указывать начальный ключ Data
Sander
а я хочу {Data: 1, Two: 2}
Sander
и потом fmt.Println(env.Two)
Slava
ты не можешь пользоваться структурой пока не определишь её
Sander
вот со структурой определения есть запары у меня
Slava
максимум что ты можешь тут сделать - парсить данные в map[string]interface{}
Sander
а как я их получу потом?
Sander
так как в мап я тоже уже пытался
Sander
ток по циклу?
Slava
что как получишь? элемент map можно получить по имени ключа
Sander
да, что это я, ужеж делал я это
Sander
секунду
Sander
запара у меня в основном в перевое стринга text := `{"Id": 100, "Name": "Go", "Age": "24"}` в нормальныое
Dmitriy
Daniel Slava можете подсказать с вопрос? Он без ответа
Sander
стринга потому что, получаю с рабочего окружения стрингу, когда делаю os.Getenv
Sander
а когда получаю, у меня кавычки одинарные {'id': 100, оно так не работает, поэтому надо делать реплейс на двойные
Sander
но пока не могу сделать нормально Unmarshal
Slava
Daniel Slava можете подсказать с вопрос? Он без ответа
есть delve дебаггер, он показывает что-то, есть strace и gdb
Slava
я лично кроме strace ничем не пользовался
Dmitriy
Поиск багов
Daniel
А какое отношение стеки имеют к поиску багов?
Dmitriy
Вам когда нибудь в жизни приходилось брать стектрейсы потоков и их анализировать?
Daniel
Только при обработке исключений
Dmitriy
Тогда понятно, скажу так, в контексте работы частенько приходится анализировать thread dump, чтобы найти проблему
Daniel
Я легко могу придумать, как заставить все функции выкинуть стектрейс и встать на паузу, но я не могу придумать, как бы это могло мне помочь
Daniel
Не поделитесь юзкейсом?
Dmitriy
Пример из java пойдёт.
Dmitriy
?
Daniel
Вполне
Anonymous
Люди добрые подскажите как можно вещественное число форматировать в строку с strconv.FormatFloat
Dmitriy
В коде активно используем assert, само собой в рамках тестирования, предположим что какой то assert падает, я ставлю в него дебаг, когда поток останавливается на дебагер делаю полный дамп, анализирую, могу по стеку подняться и посмотреть почему у меня меня был передано то или иное значение в параметр метода, +все локальные переменные в данный момент видны
Daniel
Я вот Sprintf пользуюсь цинично
Anonymous
Я вот Sprintf пользуюсь цинично
ну в php есть простое приведение типов и это ну настолько просто конкатенировать строки
🏳️ Phil
Я вот Sprintf пользуюсь цинично
Чйорт. А я думал я туповат...
Anonymous
а какой вариант в го?
Anonymous
а тут надо соблюдать типы
Daniel
А?
Sander
все спасибо работает,
Sander
работаем дальше
Daniel
Sprintf умеет %v специально для пехапистов
Dmitriy
Daniel подходящий пример?
Daniel
Очень подходящий
Dmitriy
Assert это true false больше он ничего не расскажет
Dmitriy
Локально в методе да можно напечатать
Anonymous
Sprintf умеет %v специально для пехапистов
мне кажется это лучше чем FormatFloat
Dmitriy
А если выше по стеку посмотреть или надо посмотреть что другие потоки делают
Daniel
Не надо
Daniel
Не надо так код писать, чтобы это важно было
Daniel
Это imho, конечно, можно не спорить :)
Daniel
Но я понял, вам дебагер нужен, а мне нет
Dmitriy
Да я и не думал) но все началось с тезиса про дебагер)
Sander
🤔
Daniel
Да лана
Daniel
Функциональные языки не беднее процедурных