Anonymous
Неа, плин, компилю жи, как так-то? /home/marlik/local/bin:/usr/local/heroku/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
Daniel
компилю - это про $GOROOT/bin
Anonymous
Спасибо, пошёл пути ставить.
Chebyrash
что-то близкое к твоей теме https://hashrocket.com/blog/posts/switch-vs-map-which-is-the-better-way-to-branch-in-go
The original question I wanted to answer was if there would be a performance impact in converting a switch statement to a map lookup. I assumed that switches would be faster. I was wrong. Maps are usually faster, often several times faster. The choice of switch or map should be made based on whichever produces the clearest code.
Anonymous
echo $PATH
А эти почему пустые? GOBIN="" GOEXE=""
Anonymous
ребята а никто не сталкивался с такой проблемой? https://github.com/golang/go/issues/11496 есть какие то альтернативные решения?
Slach
А эти почему пустые? GOBIN="" GOEXE=""
ты про их назначение почитай вообще
Anonymous
Уже читаю. Спасибо.
Anonymous
На андроиде апку на го не запущу пока рута не будет, я правильно понимаю?
Anonymous
Баньте его!
Anonymous
На андроиде апку на го не запущу пока рута не будет, я правильно понимаю?
Я видел проги, которые запускают код на Go без рута
Anonymous
@zelenin
Anonymous
Мне для экспериментов.
Anonymous
А можно подробнее, где и как?
https://play.google.com/store/apps/details?id=org.ligi.ipfsdroid Вот эта прога под капотом запускает go-ipfs бинарник. Как - хз...
Anonymous
Спасибо, щас посмотрю.
Anonymous
Там исходники на гитхабе, можешь глянуть под капотом ))
Anonymous
Ага, уже смотрю.
Sergius Ofitserov
שלום
Anonymous
שלום
Manishma?
Sergius Ofitserov
Sababa
Anonymous
Manishma?
Ma nishma?
Sergius Ofitserov
Только ма нишма отдельно пишется :)
Sergius Ofitserov
Anonymous
Только ма нишма отдельно пишется :)
Чекак?) тоже раздельно :))
Anonymous
Чот с го тура код ошибку выдаёт)) s := []struct { i int b bool }{ {2, true}, {3, false}, {5, true}, {7, true}, {11, false}, {13, true}, } fmt.Println(s.i)
Axm
Ты не можешь написать s.i
Anonymous
Ты не можешь написать s.i
А на гоу туре https://go-tour-ru-ru.appspot.com/moretypes/9 могут. Я то так: for _, v := range s { fmt.Println(v) }
Sergius Ofitserov
Чекак?) тоже раздельно :))
Это исключительно в целях сохранения традиций😜 без обид:)
Anonymous
Вот пока здесь народ есть, вопрос! func main() { scores := make([]int, 0, 5) c := cap(scores) fmt.Println(c) for i := 0; i < 25; i++ { scores = append(scores, i) if cap(scores) != c { c = cap(scores) fmt.Println(c) } } } Собсно вопрос, почему увеличение идёт 10 20 40?
Anonymous
Ты меня обманываешь, там print(s)
Нет, посмотри ещё раз.))
Axm
Нет, посмотри ещё раз.))
У меня всё норм и run работает
Anonymous
У меня всё норм и run работает
У меня нет, prog.go:18:15: s.i undefined (type []struct { i int; b bool } has no field or method i)
Anonymous
Плят, извиняюсь, это я несколько дней назад ковырялся там и результаты сайт сохранил))))) 🤣
auvn
можно упороться и сделать свой append, который будет на +1 увеличивать слайс :) но это уже совсем другая история
Vladimir
Вот пока здесь народ есть, вопрос! func main() { scores := make([]int, 0, 5) c := cap(scores) fmt.Println(c) for i := 0; i < 25; i++ { scores = append(scores, i) if cap(scores) != c { c = cap(scores) fmt.Println(c) } } } Собсно вопрос, почему увеличение идёт 10 20 40?
аллокация памяти и копирование данных это не очень дешево. Стандартный подход подобных структур - увеличивать их в энное колличество раз
Vladimir
он не всегда удваивается
Vladimir
https://play.golang.org/p/9r6MJ8giVTY
Vladimir
например вот
Vladimir
https://play.golang.org/p/042bgTC9k4V - можно даже так сделать, если хочется
Anonymous
Vladimir
и почитать https://golang.org/src/runtime/slice.go - 72 строку и далее
Anonymous
и почитать https://golang.org/src/runtime/slice.go - 72 строку и далее
Это что? )) // TODO: When the old backend is gone, reconsider this decision. Поменяться всё ещё может?
Slava
@meehalkoff не нужно себя здесь так вести
Anonymous
Всем привет. Не подскажете ли, есть ли какая-нибудь готовая либа для запуска функций в N потоков? Условно: var w WorkPool w.ThreadCount = 4 for i:=0; i<100;i++ { w.StartWork(i) } w.WaitForComplete Даже не знаю, как сформулировать свой запрос к гуглу...
Zloy-Dobry
go func() {}() не?
Anonymous
go func() {}() не?
Мне нужны лимиты на кол-во одновременно работающих обработчиков, возможность дождаться завершения.
Anonymous
посмотри в сторону sync.WaitGroup
Свой костыль написан, но он нестабилен )) Думаю, может есть что-то готовое на эту тему...
Axm
Это же есть в любой статье о горутинах и каналах
Илья
например тут https://blog.golang.org/pipelines
Zloy-Dobry
https://www.reddit.com/r/golang/comments/70sfmk/syncwaitgroup_limit/ не благодари
Axm
https://gobyexample.com/worker-pools
Vladimir
Делают в таком духе
Vladimir
https://github.com/uber-go/ratelimit
Vladimir
https://godoc.org/golang.org/x/time/rate#Limiter
Vladimir
Вот с ходу три примера
Anonymous
Спасибо всем, сел изучать всё, что накидали))
Vladimir
Последний самый навороченный
Vladimir
Но работают они все +- одинаково
Vladimir
Точнее уберовский - честный leaky bucket
Vladimir
По учебнику
Vladimir
Последний в общем тоже. А первый тупо запрещает параллельно делать более чем эн запросов
Заур
Ребзя, а есть какая-нибудь такая же группа по девопсу?
Заур
Не хочу здесь эфир засорять вопросами по девопсу
Заур
https://t.me/devops_ru
Спасибо)))
Konstantin
Мне нужны лимиты на кол-во одновременно работающих обработчиков, возможность дождаться завершения.
можно буферизированный канал сделать под это дело например на 5, и он будет блокировать процесс пока из него не прочтешь. т.е. больше 5 не будет
Konstantin
но сдается мне эту гуглокостыль))