Anonymous
чего-нибудь человеческое бы
Anonymous
гемор, я думал на готовенькое сесть чтонить
Kirill
свари сосиску
Kirill
ладно, слишком толсто :D
Cat
но тут уж на вкус и цвет
Anonymous
злые вы.
Cat
Cat
./smth -a 1 2 3 -b 4 5 6
Cat
если не распарсилось в int, то ключ?
Cat
а если строковое значение?
Kirill
если -{буква} - ключ, чо
Andrey
Твои -a и -b будут переключать парсер аргументов. А как только - попадется, будет его отключать и переключать на парсер ключей.
Cat
>если -{буква} - ключ, чо
так это вообще просто
Cat
.split("-")
Cat
в общем, решение зависит от
Nikita
А в go нет какой-нибудь готовой удобной библиотеки для этого?
Andrey
Нет, сплит не поможет. Этот - может быть внутри аргументов, которые внутри кавычек например.
Andrey
Нужно разбирать и накапливать посимвольно.
Cat
Cat
ну шо вы триггеритесь
Cat
конеш надо использовать полноценный парсер грамматик
Andrey
ну шо вы триггеритесь
Я на прошлой неделе именно это делал... Делай сам. Нет готовых либ, которые как-то облегчат твою жизнь.
Andrey
А если есть - запаришься адаптировать под свой кейс.
Nikita
Серьёзно?
Я просто на питоне пишу, так мимо подходил.
Nikita
Отсутствие инструментов для работы с аругементами командной строки это как-то очнеь странно, особенно для языка которому много лет.
Sergei
Sergei
иначе никак, это го.
Cat
Cat
но вообще, flag с отсутвием long options придумали странные люди
Cat
Nikita
Ага.
Cat
ссылку, на либу или whatever
Nikita
https://docs.python.org/3.6/howto/argparse.html
Nikita
Помимо стандартной библиотеки есть еще всякие обертки для упрощения жизни.
Cat
Nikita
Вот ссылка на конкретную вещь для этого, вместо базового how-to
https://docs.python.org/3.6/library/argparse.html#nargs
Cat
так-то
-k 1 -k 2 -k 3 -> "k" : [1, 2, 3]
сделать можно
Sergei
я придумал! нужно из гошки вызывать питон.
Cat
Kirill
Andrey
Ну тогда нужно заимплииентить и выложить, если они там фееричный синтаксис уже придумали для покрытия всех вариантов аргументов.
Cat
есть такое
Cat
https://github.com/alexflint/go-arg
Cat
а, нет, там это по-другому сделано
Cat
я-то не буду)
Anonymous
😢
Dmitry
у меня вопрос по использованию структуры с массивом строк в качестве ключа для мапы. за счет чего это выходит быстрее чем мапы с ключом строкой или интом и хешфункцией? https://github.com/RedSkotina/xrich/blob/develop/chain_test.go
Kirill
а покажи результаты бенча
Kirill
Dmitry
Dmitry
Kirill
скорее всего, _typ.alg.hash быстрее отрабатывает 🤔
Kirill
а ты уверен, что бенчмарк не заоптимизировался?
Kirill
и зачем if ok { continue } ?
Dmitry
чтобы оптимизатор не выкинул возврат результата
Dmitry
я не проверял, просто на всякий случай
Kirill
на всякий случай запихни-ка ok в глобальную область видимости и заэкспортируй
Kirill
а потом - твои функции хеширования довольно дорогие
Dmitry
ну какие есть
Dmitry
я лучше не придумал для строк
Kirill
иногда бывает такое, что лучше строки не хешировать %)
Kirill
Dmitry
Dmitry
Dmitry
Kirill
потому что :=
Dmitry
ну тоесть вернуться к старому варианту надо
Kirill
нужно было сделать за функциями var HasKey bool и юзать =
Dmitry
Kirill
userspace?