Size: a a a

2020 April 24

EK

Eduard Korolev in Go-go!
и $1 и $2 работает только в WHERE разделе
источник

ВС

Владимир Столяров... in Go-go!
а какая субд?
источник

EK

Eduard Korolev in Go-go!
постгрес
источник

ВС

Владимир Столяров... in Go-go!
Eduard Korolev
фильтры надо полностью отключать например
фильтры это условия в where, пользовался таким трюком
WHERE (filter_clause_1 OR $1) AND (filter_clause_2 OR $2)
- при $1=true первый фильтр отключается
источник

ВС

Владимир Столяров... in Go-go!
Eduard Korolev
постгрес
параметры в limit,offset прекрасно работают
источник

EK

Eduard Korolev in Go-go!
есть не только фильтры, а целые джоины
источник

EK

Eduard Korolev in Go-go!
Владимир Столяров
параметры в limit,offset прекрасно работают
не знал, попробую
источник

ВС

Владимир Столяров... in Go-go!
Eduard Korolev
есть не только фильтры, а целые джоины
да, вот тут действительно засада, билдеры запросов могут решить эту проблему
источник

EK

Eduard Korolev in Go-go!
Владимир Столяров
да, вот тут действительно засада, билдеры запросов могут решить эту проблему
поэтому и спрашиваю, билдеров то много а какой хороший - фиг знает
источник

ВС

Владимир Столяров... in Go-go!
https://awesome-go.com/#database -> SQL query builder, libraries for building and using SQL.
выбирайте) а вообще тут советовали squirrel, у нас соседняя команда начала с goqu
а мы вообще сидим на go-pg (там проще всего с подобным, есть Apply)
источник

А

Артем Рудяк... in Go-go!
люди, объясните плиз в чем ошибка
package main

import (
 "fmt"
 "sync"
 "time"
)

func main() {

 cities := []string{"London", "Paris", "Berlin", "Rome", "Madrid"}
 channel := make(chan string)
 startMultipleGoRoutines(channel, cities)

 for v := range channel {
   fmt.Println(v)
 }
}

func startMultipleGoRoutines(channel chan<- string, cities []string) {
 defer close(channel)
 var wg sync.WaitGroup
 wg.Add(len(cities))
 for _, v := range cities {
   go func(city string) {
     time.Sleep(time.Second)
     channel <- fmt.Sprintf(v + "1")
     wg.Done()
   }(v)
 }
 wg.Wait()
}
источник

OK

Oleg Kovalov in Go-go!
Артем Рудяк
люди, объясните плиз в чем ошибка
package main

import (
 "fmt"
 "sync"
 "time"
)

func main() {

 cities := []string{"London", "Paris", "Berlin", "Rome", "Madrid"}
 channel := make(chan string)
 startMultipleGoRoutines(channel, cities)

 for v := range channel {
   fmt.Println(v)
 }
}

func startMultipleGoRoutines(channel chan<- string, cities []string) {
 defer close(channel)
 var wg sync.WaitGroup
 wg.Add(len(cities))
 for _, v := range cities {
   go func(city string) {
     time.Sleep(time.Second)
     channel <- fmt.Sprintf(v + "1")
     wg.Done()
   }(v)
 }
 wg.Wait()
}
а можно еще деталей? что не так?
источник

A

Aikidos in Go-go!
Артем Рудяк
люди, объясните плиз в чем ошибка
package main

import (
 "fmt"
 "sync"
 "time"
)

func main() {

 cities := []string{"London", "Paris", "Berlin", "Rome", "Madrid"}
 channel := make(chan string)
 startMultipleGoRoutines(channel, cities)

 for v := range channel {
   fmt.Println(v)
 }
}

func startMultipleGoRoutines(channel chan<- string, cities []string) {
 defer close(channel)
 var wg sync.WaitGroup
 wg.Add(len(cities))
 for _, v := range cities {
   go func(city string) {
     time.Sleep(time.Second)
     channel <- fmt.Sprintf(v + "1")
     wg.Done()
   }(v)
 }
 wg.Wait()
}
channel <- fmt.Sprintf(city + "1")
источник

A

Aikidos in Go-go!
а у тебя там v, хоть и передаёшь city
источник

А

Артем Рудяк... in Go-go!
не, проблема в дедлоке
источник

А

Артем Рудяк... in Go-go!
если канал не буферизированный, то получается дедлок
источник

A

Aikidos in Go-go!
Артем Рудяк
не, проблема в дедлоке
Не увидел дедлока. Проверил, на плейграунде всё работает.
источник

OK

Oleg Kovalov in Go-go!
Артем Рудяк
не, проблема в дедлоке
закрываешь чаннел
источник

OK

Oleg Kovalov in Go-go!
хотя не, стоп
источник

А

Артем Рудяк... in Go-go!
Aikidos
Не увидел дедлока. Проверил, на плейграунде всё работает.
я изначально неправильно скинул, изменил канал теперь обычный
источник