Artem
Слайс будет строковый, а там другой формат
Aleksandr
Слайс бывает разных типов
Aleksandr
Не прошел
Artem
речь о https://tour.golang.org/?
Aleksandr
Например
Artem
Прошел
Aleksandr
https://go-tour-ru-ru.appspot.com/moretypes/7
Aleksandr
Вот про слайс
Aleksandr
Про строки тут ни слова
Aleksandr
https://go-tour-ru-ru.appspot.com/moretypes/15
Aleksandr
Добавление в слайс
Artem
Я знаю как работать со слайсами, я не знаю как потом его в куки перевести
Aleksandr
Я пас
Дмитрий
Artem
HTTP запросы
Дмитрий
почему нельзя
req.AddCookie(&cookie1)
req.AddCookie(&cookie2)
Artem
Не
Artem
Мне в функцию передать надо
Дмитрий
передай слайс кук
Дмитрий
в чем трабл
Artem
Потому что не знаю как
Artem
cannot use cookie (type []string) as type string in field value
Дмитрий
можно весь код?
Denis
Artem
cookies = append(cookies, &http.Cookie{"name", "value"})
Artem
Так?
Denis
да
Artem
too few values in struct initializer
Denis
блин!
Quet
наверное стоит пройти хотя б a tour of go 🙂
Denis
слушай, тебе наверное кажется, что мы над тобой издеваемся, не говоря просто разу правильного ответа
Artem
а всё
Artem
я допер
Denis
но это просто потому что ты не понимашь синтаксиса языка. пройди тур
Artem
cookies = append(cookies, &http.Cookie{Name: "value", Value: "value"})
Quet
Artem
Спасибо большое)
Artem
Есть кто не устал?)
функция возвращает (response.UsersResponse, error)
как мне вывести response.UsersResponse в формате JSON на экран браузера?) заранее извиняюсь, что достал)
я вроде немного разобрался, но не знаю что передать Write()
w.Header().Set("Content-Type", "application/json")
w.Write()
Dmitri
json.NewEncoder(w).Encode(response.UsersResponse)
Artem
w.Header().Set("Content-Type", "application/json") - а это н ужно?
Dmitri
если клиенту нужно, то нужно
Artem
а как правильно обратиться к response.UsersResponse, если я поместил результат функции в result? result.response.UsersResponse чет не катит
Artem
Сам возврат происходит так:
resp := response.UsersResponse{}
err = json.Unmarshal(body, &resp)
return resp, err
Artem
пробовал еще по-другому, тогда
too many arguments in call to json.NewEncoder(w).Encode
have (response.UsersResponse, error)
want (interface {})
🄽🄸🄺🄸🅃🄰
Народ, где можно сравнить тельной быстро поднять несколько отдельных виртуалок, протестить микросервисы математики, которые проц кушают хорошо
🄽🄸🄺🄸🅃🄰
По сути докер контейнеры
🄽🄸🄺🄸🅃🄰
И nats
Dmytro
Докер, вагрант
Dmytro
Вагрант очень прост
Dmytro
Artem
Это я просто с гитхаба установил
Artem
Мне теперь нужно вывести в браузере то, что возвращает функция
Dmytro
Воспользуйся gin framework
Dmytro
Он json очень хорошо выводит
Dmytro
И вообще крутой и простой фрейморк
Dmytro
c.JSON(http.StatusOK, gin.H{
"status": "You are logged in",
"token": user.Token,
})
Artem
Constantine️
Подскажешь?
https://kev.inburke.com/kevin/golang-json-http/
Artem
Там все через структуру, а у меня чуть другое
heavycharged
господа, а если у нас мультиплексирование через select, и в одном из case мы пишем в канал (а в других - читаем), то Go запишет туда только когда кто-то будет читать, или он запишет, а когда кто-то прочитает, то получит уже готовое значение? Дело в том, что у меня канал без буфера, и я вот такую штуку проделал, и select спокойно работает, и не лочится. Часто вижу такую конструкцию, хочу просто чтобы кто-то прояснил мне, чтобы не было ошибочных мыслей.
heavycharged
и второй вопрос, если я добавлю буфер, то он набьет этот буфер значениями, а потом передаст мультиплексирование на другие case?
Quet
😂😂
Slava
господа, а если у нас мультиплексирование через select, и в одном из case мы пишем в канал (а в других - читаем), то Go запишет туда только когда кто-то будет читать, или он запишет, а когда кто-то прочитает, то получит уже готовое значение? Дело в том, что у меня канал без буфера, и я вот такую штуку проделал, и select спокойно работает, и не лочится. Часто вижу такую конструкцию, хочу просто чтобы кто-то прояснил мне, чтобы не было ошибочных мыслей.
1) селект блокируется на небуферизированном канале, если никто не читает 2) что значит у вас селект не лочится? он заходит в case записи в канал когда из него никто не читает?
Slava
Slava
@zloydead в этом канале оскорбления не приветствуются
heavycharged
Вот код: https://pastebin.com/aEpwa4Cv
Вкратце:
У меня есть горутина, внутри неё я создаю тикер (time.Ticker), и захожу в бесконечный цикл. Внутри цикла:
- либо читаем из тикера
- либо читаем из канала setDuration, куда приходит time.Duration (чтобы установить новый интервал для тикера)
- либо пишем в канал getDuration (если кому-то нужно знать, какая пауза у тикера стоит)
через HTTP обращаюсь к хендлеру, он вызывает метод GetInterval (в той ссылке что я скинул он в самом начале), и сразу получает интервал, при этом если я не вызываю этот хендлер, то select работает с тикером вполне себе успешно, и не лочится на отправке в getDur (никто же не читает оттуда)
heavycharged
Про то, что один case выполняется - я понимаю это. Интересует именно тот case, где происходит отправка. По той ссылке что вы дали, вижу вот это A select blocks until one of its cases can run, then it executes that case. It chooses one at random if multiple are ready. В моем случае, если мы не читаем не из одного канала, при этом есть один case с записью в небуферизированный канал, и из канала никто не читает, значит этот case не выполнится. На практике так, а вы говорите что будет блока. А блоки не происходит, вот собственно и стало любопытно.
Slava
сделайте полный код, который выполняется в playground
Slava
а то в вашем куске ничего не видно, ни как каналы вы создавали, ни что за Update методы
heavycharged
сори, думал чтобы портянку не кидать, кину саму суть кода
heavycharged
https://play.golang.org/p/ivUbq2DrHc-
heavycharged
вот собственно сам код
heavycharged
на каждые три tick, выполняется один tack, канал не буферизированный. если бы он блочился на отправке, тогда tick чередовался с tack.
heavycharged
хотя пример немного неправильный, потому что здесь есть горутина, которая читает и спит, в моем случае чтение из канала происходит только тогда, когда я приду по HTTP и запрошу /api/v1/getInterval, других читателей нету.
heavycharged
но сама суть отправки в небуферизированный канал тут есть
Slava
так а в чём вопрос? у тебя читает кто-то, твой case в селект записывает туда
Slava
heavycharged
вопрос был в том, что внутри select у нас два кейса, либо мы читаем из тикера (допустим, пока не читаем, время не настало), значит мы пишем в getChan, но так как он не буферизированный, то по смыслу каналов мы должны тут подвиснуть, пока кто-то не вычитает из него. Но, если я правильно понял, Go умеет определять читает ли кто-либо из канала, потому что блокировки на этом этапе не происходит. или я что-то не так понял?