EK
Size: a a a
EK
ВС
EK
ВС
WHERE (filter_clause_1 OR $1) AND (filter_clause_2 OR $2)- при $1=true первый фильтр отключается
ВС
EK
EK
ВС
EK
ВС
SQL query builder, libraries for building and using SQL.
А
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
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
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")
А
А
OK
OK