написал хендлер для всех задач и для вызова по одной

This commit is contained in:
Илья Смышляев 2022-12-01 13:47:37 +03:00
parent 484bff5c9e
commit 671096d15b
2 changed files with 60 additions and 3 deletions

61
main.go
View File

@ -1,10 +1,13 @@
package main
import (
"bytes"
"fmt"
"gotest/solutions"
"io"
"log"
"net/http"
"strings"
"sync"
)
func main() {
@ -18,5 +21,59 @@ func main() {
}
func Handler(w http.ResponseWriter, r *http.Request) {
io.WriteString(w, "я стану хокаге!!!")
if r.URL.Path == "/tasks/" {
var answers = make([][]byte, 4)
var err error
var wg sync.WaitGroup //ждёмс рутины
wg.Add(4)
go func() {
defer wg.Done()
answers[0], err = solutions.ProcessTask(solutions.Rotation)
if err != nil {
log.Fatalln(err)
}
}()
go func() {
defer wg.Done()
answers[1], err = solutions.ProcessTask(solutions.FindUnique)
if err != nil {
log.Fatalln(err)
}
}()
go func() {
defer wg.Done()
answers[2], err = solutions.ProcessTask(solutions.Cons)
if err != nil {
log.Fatalln(err)
}
}()
go func() {
defer wg.Done()
answers[3], err = solutions.ProcessTask(solutions.Missing)
if err != nil {
log.Fatalln(err)
}
}()
wg.Wait()
w.Write(bytes.Join(answers, []byte{}))
} else {
taskName := strings.Split(r.URL.Path, "/")
//fmt.Println(taskName[2])
answer, err := solutions.ProcessTask(taskName[2])
if err != nil {
log.Fatalln(err)
}
w.Write(answer)
}
}

View File

@ -20,7 +20,7 @@ type taskElement struct {
result []int
}
func processTask(taskName string) ([]byte, error) {
func ProcessTask(taskName string) ([]byte, error) {
//получаем условия для задач
var taskCases []json.RawMessage
err := getCases(taskName, &taskCases)