LINUX.ORG.RU

go dict

 


0

2

Есть какой-то инструмент, который позволяет продублировать функционал python'овского dict() ? Чтобы можно было делать типа

{
    1: 1,
    "some": 1,
    "some1": {...}
}


Что именно ты хочешь? Структуры тебе не подходят?

Difrex ★★★★
()

Шта?

type h map[string]interface{}

h{
    "one": 1,
    "some": 1,
    "some1": h{...},
}

Если телепаты не в отпуске, то максимум так.

derlafff ★★★★★
()
Последнее исправление: derlafff (всего исправлений: 1)
Ответ на: комментарий от Difrex

map[interface{}]interface {}

чтоже может пойти не так?

Doctor, it hurts, when I shoot myself in the foot.

beastie ★★★★★
()
Ответ на: комментарий от Difrex

Хм, чтоже может пойти не так?

Что угодно, если твои ожидания о внутреннем устройстве interface{} не совпадут с реальностью. Собственно, это и вне map[interface{}]whatever правдиво.

derlafff ★★★★★
()
Ответ на: комментарий от Difrex

Хм, чтоже может пойти не так?

нет под рукой Go, чтобы проверить, но он не должен дать использовать в качестве ключа unhashable type(например слайс)

Dred ★★★★★
()
Ответ на: комментарий от derlafff

Рефлексия во все поля. Короче, в большинстве случаев map[interface{}]interface{} — признание программиста, что он не в курсе, что творит.

DoctorSinus ★★★★★
()
Ответ на: комментарий от Dred

Он таки дает, но кидает в рантайме панику, если ты все-таки туда unhashable.

derlafff ★★★★★
()
Последнее исправление: derlafff (всего исправлений: 1)
Ответ на: комментарий от Dred

не должен дать использовать в качестве ключа unhashable type

comparable

beastie ★★★★★
()
Ответ на: комментарий от xpahos

Или работает с json.

Для json хватит и map[string]interface{}. Хотя для API и это перебор.

import json
print(json.dumps({1: 1, "1": 1, "some": 1, "some1": {}, None: "some"}))
{"1": 1, "1": 1, "some": 1, "some1": {}, "null": "some"}
KillTheCat ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.