@proGO

Страница 1139 из 1674
Sergey
13.01.2018
14:54:08
Кидай запросы параллельно

Пиши их в канал потом все

me
13.01.2018
14:54:19
да struct я так и сделал

Sergey
13.01.2018
14:54:27
Доставай из канала и сортируй как надо

Google
me
13.01.2018
14:54:37
но я не пойму как в цикле делать каналы и потом из них чиатть

и как-то дождаться всех ответов

там типа wg.wait()

мне нужен только один канал или массив?

Sergey
13.01.2018
14:55:52
Смотря что ты хочешь делать

Прочитай про chan

Как они работают

me
13.01.2018
14:56:21
да вот читал, с одним я работать понимаю как, а вот с массивом - нет. Вот я тут и спрашиваю

Sergey
13.01.2018
14:56:39
Ну кинь код свой, давай напишу

me
13.01.2018
14:56:49
допустим у меня есть метод fetch(url, index, ch) и есть urls массив

я в цикле for index,url:=range urls { go fetch(url, index, ch) }

вот только в for я не понимаю как сделалть этот вот ch и как потом из него прочитать

Google
Sergey
13.01.2018
14:58:18
Горутина отдельная с циклом пока не получили все записи

И бери из канала каждый раз

<-ch

me
13.01.2018
14:58:45
а горутьиана на каждый запрос тоже нужна?

мне нужно сделать только один канал? ch := make(chan Response, len(urls))?

Sergey
13.01.2018
15:01:14
https://tour.golang.org/concurrency/4

https://tour.golang.org/concurrency/2

me
13.01.2018
15:02:01
https://tour.golang.org/concurrency/2
ch := make(chan FeedResponse, len(urls)) for index, url := range urls { go GetFeed(url, index, ch) } for res := range ch { fmt.Println(res) } close(ch) Вот так все работает только программа не завершается. Что не так?

Александр
13.01.2018
15:10:14
ну так канал то не закрыт

Александр
13.01.2018
15:10:24
он и крутит в бесконечном цикле

me
13.01.2018
15:11:23
что значит закрыть канал?

close(ch) там ведь есть, или это не то?

Александр
13.01.2018
15:11:56
так он после цикла

me
13.01.2018
15:11:58
а, в цикле нужно закрыть? Тогда как определить что все закрыл?

Александр
13.01.2018
15:12:01
а цикл не завершается

me
13.01.2018
15:12:03
что все получил

Google
Sergey
13.01.2018
15:13:41
что все получил
Чувак я же кидал

Дочитай до конца

https://tour.golang.org/concurrency/4
В чем проблемма

Ну один в один там

me
13.01.2018
15:14:50
В чем проблемма
там цикл синхронный и поэтому понятно когда закрыть

me
13.01.2018
15:15:43
x, y := 0, 1 for i := 0; i < n; i++ { c <- x x, y = y, x+y } close(c)

ну тут ведь когда прошел цикл и все передано в канал вызывается close

Sergey
13.01.2018
15:16:06
Ну смотри тогда wait group)))

me
13.01.2018
15:16:20
ну вот :) Я об этом сначала и спрашивал?

ладно. Всем спасибо. Разобрался

если кому интересно, получилось вот так func GetFeeds(urls []string) [][]byte { length := len(urls) results := make([][]byte, length) ch := make(chan FeedResponse, length) for index := 0; index < length; index++ { go GetFeed(urls[index], index, ch) } for index := 0; index < length; index++ { res := <-ch results[res.Index] = res.Body } close(ch) fmt.Println(len(results)) return results } ну чтобы без waitgroup обойтись

me
13.01.2018
15:34:25
что самое прикольное в js это одна строчка. Хоть конечно там не thread а event loop Promise.all(urls.map(getFeed)).then(sortedArrayOfResponses)

Alexander
13.01.2018
21:15:54
что самое прикольное в js это одна строчка. Хоть конечно там не thread а event loop Promise.all(urls.map(getFeed)).then(sortedArrayOfResponses)
Можно на структурах и в Go сделать в пару строк (для дальнейшего использования), если покурить...

mozomig
13.01.2018
21:16:00
Ребят как заставить го складывать бины в $GOPATH/bin, щас он кидает тупо в $GOPATH

mozomig
13.01.2018
21:16:32
win?
mac os

в $PATH прописал $GOPATH/bin

Alexander
13.01.2018
21:19:26
mac os
Попробуй указать $GOBIN

$GOBIN = $GOPATH/bin

Google
Alexander
13.01.2018
21:20:20
мб у тебя где-то он уже прописан на каталог $GOPATH

и тупо туда устанавливает

https://golang.org/cmd/go/#hdr-GOPATH_environment_variable

mozomig
13.01.2018
21:21:09


не помогло

ааа понял косяк

me
13.01.2018
21:23:20
Admin
ERROR: S client not available

mozomig
13.01.2018
21:23:26
надо не go build а go install, сорян

ребят подскажите у кого опыт есть, как лучше организовать общение между микросеврисами на го, просто через http rest или кто-то способ получше знает?

Vladimir
13.01.2018
21:25:35
Grpc

me
13.01.2018
21:25:40
Socket, rpc?

mozomig
13.01.2018
21:28:54
ну а плюсы есть какие-то по отношению к http рест?

Vladimir
13.01.2018
21:31:56
Полноценный РПЦ вот

Marlik
13.01.2018
21:35:17
Grpc
А graphql?

Vladimir
13.01.2018
21:37:08
А graphql?
Несколько не в месте взаимодействия между серверами

Marlik
13.01.2018
21:37:30
А клиент - сервер, что юзают?

mozomig
13.01.2018
21:42:32
А клиент - сервер, что юзают?
пока ничего, но либо рест либо graph ql буду пилить)

Google
Marlik
13.01.2018
21:43:01
Понятно.

У graphql что с безопасностью?

mozomig
13.01.2018
21:44:08
У graphql что с безопасностью?
а что собственно не так? Я лично ничего не слышал плохого о нем

Marlik
13.01.2018
21:45:18
а что собственно не так? Я лично ничего не слышал плохого о нем
Ну например слышал что мона выкачать весь сайт/бд, лехко и просто. Плюс нуно наверное что-то писать дополнительное что-бы, ограничивать запросы.

mozomig
13.01.2018
21:46:14
Ну например слышал что мона выкачать весь сайт/бд, лехко и просто. Плюс нуно наверное что-то писать дополнительное что-бы, ограничивать запросы.
ну по ресту так же можно выкачать всё что хочешь, а так можно в графе с помощью вложенных запросов подвесить всё, но это всё решается просто ограничем на вложенные запросы

Marlik
13.01.2018
21:48:17
Плят, https://gobyexample.ru/ умер по ходу.

Marlik
13.01.2018
21:52:13
Это понятно, но можно всё по чуть-чуть и запросить)

Aleksandr
13.01.2018
21:54:50
Это понятно, но можно всё по чуть-чуть и запросить)
ну да. ты же апи делаешь, чтобы кто-то что-то запрашивал?

Marlik
13.01.2018
21:55:10
А почему не конвертится? Отдельно каждый байт конвертить нужно? type IPAddr [4]byte func (i IPAddr) Stringer() string { v := string(i) return v }

Marlik
13.01.2018
21:56:55
cannot convert i (type IPAddr) to type string как-то так...

Aleksandr
13.01.2018
21:58:15
а если так: return string([]byte(i))

Marlik
13.01.2018
21:59:10
cannot convert i (type IPAddr) to type []byte

Aleksandr
13.01.2018
22:01:41
string(i[:])

Marlik
13.01.2018
22:02:38
Ага, супер, работает))

Чот никак не доходило что мона срез заюзать.

Sergey
13.01.2018
22:14:59
type Book struct { isbn string json:"isbn" title string json:"title" author string json:"author" } book := Book{isbn:"1234", title:"Call of Cthulhu", author:"Lovecraft"} json.NewEncoder(os.Stdout).Encode(book) Выводит в терминал {}. Написал имена полей структуры с заглавной буквы и всё вывело должным образом. Это так и должно работать?

Страница 1139 из 1674