Alexander
-G это понять и простить?
ну а как ты думал? откуда это вообще взял человек с ответом? он писал компилятор и знает про странную фичу?
Igor
Null
Alexander
1.18.4
Igor
go build -gcflags -help
Dilame
У процессора на сервере Ubuntu архитектура x86_64
С какими опциями запустить команду go build для него?
Dilame
mrbuster9
Доброго времени суток!
Подскажите плиз как решить проблемку. Разбираю JSON в структуру, одно поле в JSON имеет явный цифровой тип длиной 10 байт, соответственно если использовать float64 число не влезает в поле структуры и часть отрезается. Пробовал использовать тип big.Float получаю ошибку. Посоветуйте как решить.
Dilame
Akhmed
Мужики, здарова. Слушайте, вопрос. Как можно получить параметры запроса в классе *http.Request ?
Andrey
Akhmed
Аля page=1&search=abc и т.д
Andrey
вот ты вроде пишешь про тело,а потом пишешь про query)
Akhmed
На стаковере читал, что ParseForm(), но у меня пропадают параметры вообще, а читая офф доку по http, глаза расходятся и найти ничего нормально не могу с поиском
Andrey
и все же, что ты хочешь, получить тело запроса, или квери?
Akhmed
Тело
Andrey
ну тогда оно находится в http.Request.Body
Andrey
но его надо анмаршалить, если так json
Andrey
Тело
можешь тут почитать
https://dev.to/billylkc/parse-json-api-response-in-go-10ng
Nikita
Ребят, всем привет! Не могу додуматься до решения.
Есть слайс с функциями (funcs), пытаюсь его обработать эти функции, итерируясь по нему и запуская каждую функцию, затем записываю результат функции в канал.
results := make(chan interface{}, len(funcs))
srez := []interface{}{}
go func() {
for _, await_func := range funcs {
results <- await_func()
}
close(results)
}()
for x := range results {
srez = append(srez, x)
}
return srez
Прикол в том, что с таким решеним у меня получается ожидание того, пока отработают все горутины и запишут результаты в канал. Как мне это сделать в стиле async/await? Чтобы не ждать пока все отработают?
Есть идея запускать каждую функцию из слайса в горутине, по не понятно, как записывать каждую в канал.
Andrey
Andrey
Ребят, всем привет! Не могу додуматься до решения.
Есть слайс с функциями (funcs), пытаюсь его обработать эти функции, итерируясь по нему и запуская каждую функцию, затем записываю результат функции в канал.
results := make(chan interface{}, len(funcs))
srez := []interface{}{}
go func() {
for _, await_func := range funcs {
results <- await_func()
}
close(results)
}()
for x := range results {
srez = append(srez, x)
}
return srez
Прикол в том, что с таким решеним у меня получается ожидание того, пока отработают все горутины и запишут результаты в канал. Как мне это сделать в стиле async/await? Чтобы не ждать пока все отработают?
Есть идея запускать каждую функцию из слайса в горутине, по не понятно, как записывать каждую в канал.
Правильно ли я понял, что ты хочешь это запустить каждую функцию в своей горутине?
Andrey
Сейчас
Nikita
Если я буду делать так
```
go func() {
for _, await_func := range funcs {
results <- go await_func()
}
```
то не получиться.
Akhmed
Andrey
Andrey
Юра (Юрий Александрович)
results := make(chan interface{}, len(funcs))
srez:=srez := []interface{}{}
wg:=sync.WaitGroup{}
for f:=range funcs {
wg.Add(1)
go func() {
results<-f()
wg.Done()
}
}
wg.Wait()
close(results)
//и дальше читаешь из канала
}
Юра (Юрий Александрович)
Или нужно без wg?
Andrey
твой пример не эффективный)
Юра (Юрий Александрович)
(извините, писал в блокноте без IDE :( )
А функции надо, чтоб пареллельно выполнялись, или нет?
Nikita
Nikita
Есть вот такая подсказка.
Юра (Юрий Александрович)
Тогда вот тот вариант, что я написал: функции будут выполняться параллельно (и в каком порядке в канал запишутся результаты их работы наперед неизвестно).
Юра (Юрий Александрович)
Тут надо применять телепатию (или хотя бы психоанализ), и пытаться догадаться, что имел в виду автор задачи (или курса).
🅞leksiy
Ребят, всем привет! Не могу додуматься до решения.
Есть слайс с функциями (funcs), пытаюсь его обработать эти функции, итерируясь по нему и запуская каждую функцию, затем записываю результат функции в канал.
results := make(chan interface{}, len(funcs))
srez := []interface{}{}
go func() {
for _, await_func := range funcs {
results <- await_func()
}
close(results)
}()
for x := range results {
srez = append(srez, x)
}
return srez
Прикол в том, что с таким решеним у меня получается ожидание того, пока отработают все горутины и запишут результаты в канал. Как мне это сделать в стиле async/await? Чтобы не ждать пока все отработают?
Есть идея запускать каждую функцию из слайса в горутине, по не понятно, как записывать каждую в канал.
Srez 🤔🫣
Alexander
это уже апишно/клиентские заморочки могут быть в виде отправки джейсона
Alexander
бляаа
Alexander
сделай обычную хтмл формочку методом пост, отправь и посмотри что браузер отправит
Andrey
Andrey
я вроде спросил у чела как он, он сказал, и у него заработало. или без духоты никак?
Alexander
Alexander
пошел немного rfc почитать по хттп, на забавную вещь наткнулся:
4.4 Message Length
1. ...
2. ...
3. ...
4. ...
5.By the server closing the connection. (Closing the connection
cannot be used to indicate the end of a request body, since that
would leave no possibility for the server to send back a response.)
Evgeny
а может кто-нибудь со мной поговорить про service meshes и их терминологию? вот я знаю, что есть east-west трафик - это фактически горизонтальный трафик между различными приложениями в моих разных кластерах. но вот например Linkerd предлагает мне обозначить два кластера как east и west, и я не понимаю - они равноправные, или у них разные фунции? гейтвей-то для вертикального трафика у меня только в одном из них. а если кластера три будет, третий - он east или west?
Aziz
Привет всем
Подскажите пожалуйста что такое base в функции strconv.ParseInt (второй аргумент) ?
Юра (Юрий Александрович)
(т.е. этот флаг позволяет парсить в число всякие 0xFF и 0b11001100)
Aziz
Хорошо, может быть я не понимаю
Aziz
numStr := "10"
numInt64, _ := strconv.ParseInt(numStr, 2, 64)
fmt.Println(numInt64)
Aziz
вот так делаю, хочу получать 1010
Aziz
но он мне выводит 2
Aziz
10 в двоичном виде же 1010
Aziz
аааа, понял, спасибо
MRpl
Может, кто-то знает?
var db // ЧТО СЮДА ПИСАТЬ, ЧТОБЫ ИСПОЛЬЗОВАТЬ ПОТОМ ЭТО ВНЕ ЦИКЛА?
for {
fmt.Println("Waiting for database...")
conn, _ := sql.Open("mysql", "root:root@tcp(localhost:3306)/testdb")
if conn.Ping() == nil {
fmt.Println("Database connected seccessfully")
break
}
—--> db := conn
time.Sleep(5 * time.Second)
}
Alexey
Anonymous
MRpl
Просто в дальнейшем на кубах хочу запускать это и нужно, чтобы контейнер жил, пока база запускается
MRpl
Как лучше поступить?
Anonymous
Alexander
Vladimir
Господа и, надеюсь, Дамы,
Может кому здесь известны какие-то хорошие онлайн курсы по Go? Кто то может слышал какие то отзывы хвалебные о разных geekbrains'ах и яндекс.практикумах...
Есть желание пройти, авось как то дополнятся и структурируются знания. А то очень хочется перепрофилироваться и писать бэк на Го.
Bogdan
Bogdan
Теория + практика
Bogdan
Шикарный курс