Форум программистов, компьютерный форум, киберфорум
Go (Golang)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 20.01.2019
Сообщений: 13

Задача golang

25.02.2020, 00:42. Показов 2315. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нашёл задачку в интернете, а идей как реализовать нет. Понимаю, что безумно просто, реализацию на джаве сделал, а на go... в общем, сама задача:

Нужно на golang написать программу, которая:

Принимает считывает все переданные аргументы при старте и запускает web server на порту 8099.
На любой GET запрос отдаёт эти аргументы в виде JOSN массива и кода ответа 200.
Принимает POST и PUT запросы, разбивает тело запроса на строки по Whitespace characters, и добавляет их в массив с аргументами и возвращает код ответа 204 и пустое тело ответа.
В случае ошибки возвращает код ошибки 500 и пустой body http ответа.
Не выполняет никакой работы когда принимает запросы с любыми другими методами
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.02.2020, 00:42
Ответы с готовыми решениями:

Mogodb+golang
Добрый день В базе хранится название, контент, дата Задача вырвать часть контента, к примеру, первые 20 символов ...

Пакеты и их использование в Golang
Как правильно использовать пакеты в Go? Например, есть пакет computation package computation func Factorial(n int) int { ...

Создание форм в Golang?
Доброго времени суток! Интересует создание форм в Go. Есть какой то редактор форм в IDE для Go? Или как можно создать формы под Linux'ом?...

7
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
25.02.2020, 01:04
Как уже пробовали?
0
0 / 0 / 0
Регистрация: 20.01.2019
Сообщений: 13
25.02.2020, 01:12  [ТС]
Делал с помощью файла index.html. Его указывал как serverFile, внутри
Него вводил данные(input type), а позже через r.Url.Query().Get доставал
(Это то, что я пытался на Go)
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
25.02.2020, 01:41
вы хотите конечный ответ или понять?
0
0 / 0 / 0
Регистрация: 20.01.2019
Сообщений: 13
25.02.2020, 01:56  [ТС]
окончательный ответ пригодится для отправки на результат.

А так,
Хотелось бы понять (узнать) методы, которые отвечают за ту либо же иную операцию.
Так же узнать методы(по типу ListenAndServe, который отвечает за создание веб сервера) , что и как выполняет. Язык полностью новый для меня,
и одной из главной причин послужила смена проекта. Потому чем больше информации
я получу и пойму — тем лучше. По возможности, если у вас есть книга, не могли бы ей
поделится?
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
25.02.2020, 02:03
Лучший ответ Сообщение было отмечено Salwawawador как решение

Решение

Go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
package main
 
import (
    "encoding/json"
    "io/ioutil"
    "log"
    "net/http"
    "os"
    "regexp"
)
 
var args = os.Args[1:]
 
func handler(w http.ResponseWriter, r *http.Request) {
    // if our request is a GET request
    if r.Method == "GET" {
        // set header to indicate a json response
        w.Header().Set("Content-Type", "application/json")
 
        // write the response
        err := json.NewEncoder(w).Encode(args)
        if err != nil {
            // write 500 error if Encode fails
            w.WriteHeader(http.StatusInternalServerError)
        }
    }
 
    // if our request is a POST or PUT request
    if r.Method == "PUT" || r.Method == "POST" {
        // read body
        reqBody, err := ioutil.ReadAll(r.Body)
        if err != nil {
            // write 500 error if Encode fails
            w.WriteHeader(http.StatusInternalServerError)
        }
 
        // split the body string into substrings with 
        // one or more whitespace as a delimiter
        pattern := regexp.MustCompile(`\s+`)
        newArgs := pattern.Split(string(reqBody), -1)
 
        // append new arguments to the existing ones
        args = append(args, newArgs...)
        // return 204
        w.WriteHeader(http.StatusNoContent)
    }
}
 
func main() {
    // handler for out gets, posts, puts
    http.HandleFunc("/", handler)
    // listen, server and fatally die when needed
    log.Fatal(http.ListenAndServe(":8099", nil))
}
0
0 / 0 / 0
Регистрация: 20.01.2019
Сообщений: 13
25.02.2020, 02:09  [ТС]
Спасибо за наличие комментариев. (Помимо самого ответа, за него так же спасибо)
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
25.02.2020, 02:15
Всегда пожалуйста.

Вот тут проверки, если нужно:


по поводу комментов, я там одну строку копипастнул и забыл коммент поменять, в блоке для POST,

вместо
Code
1
2
if err != nil {
    // write 500 error if Encode fails
должно быть
Code
1
2
if err != nil {
    // write 500 error if ReadAll fails
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.02.2020, 02:15
Помогаю со студенческими работами здесь

GUI для golang
Посоветуйте наиболее развитую систему создания gui для golang.

Golang - WiringPi на Orange pi zero
Здравствуйте. пытаюсь по работать с портами ввода вывода на orange pi, но не получается установить библиотеку...

Web сервис на Golang + martini
Добрый день, уважаемые форумчани. Есть у кого готовые исходники разработанного Web сервиса или информация как таковой разработать....

Расширения на VS code для golang
Скачал VS code и при попытке установки расширений для golang выдает ошибки Installing github.com/mdempsky/gocode FAILED Installing...

Golang множество структур в массиве
Как поместить в массив структуры? Пытаюсь обработать json данные, для каждых данных идёт отдельная структура, но функция выполняется...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru