Микроблог

1.66K
.
L!MP
Мы тут, тащемта, веб`ом занимаемся и нас hello world в консольке не впечатляет. Даешь в браузер?
--

ДАЮ!

GoLang из коробки имеет целый набор пакетов для написание веб-приложений.
Тут есть всё для разбора запроса, маршрутизации и формирования ответа.
Даже готовый веб-сервер, и тот есть

И так, снова откроем hello.go и перепишем код так, что бы наш hello world работал как веб-сервер.

package main

import "fmt"
import "net/http"

func Handler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "Hello, world!")
}

func main() {
    http.HandleFunc("/", Handler)
    http.ListenAndServe(":9000", nil)


Запускаем из командной строки, заходим через браузер по адрессу http://127.0.0.1:9000/ и любуемся результатом
.
(\/)____o_O____(\/)
L!MP, опять те предложу гостевую на обзор, самое то чтоб было понять некоторые вещи
.
Mes que un club
код суров конечно для новичка..
.
L!MP
Koenig, боюсь там мало что будет понятно. С "наскока" будет тяжело разобраться.
Gaucer, ну так интересуйтесь, я по пробую обьяснить
.
а на хостинге как заставить работать это чудо ?
.
FastCGI?
.
насчет fast незнаю а последние 3 буквы есть
.
L!MP
Можно написать веб-сервер с преферансом и поэтессами (вирт.хосты, отдача статики, SSL) на Go.
А можно взять Nginx и проксировать запросы через него.
.
func main() {
fmt.Println("Hello, world!")
}
/…/
Все обязательно через функции?
Или func не объявление функции?
.
L!MP
Или func не объявление функции?

func это обьявление функции.

Все обязательно через функции?

Нет, можно писать код и вне функции, тут дело вот в чем.
Когда запускается программа, Go ищет в исполняемом файле функцию main и запускает её (как, к примеру, Java запускает метод main класса).

В Go существует две таких функции: init() и main().
Код в этих функциях будет исполнен единожды, при запуске программы.
--

Для наглядности, переделаем наш последний код:

package main

import "fmt"
import "net/http"

func Handler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "Hello, world!")
    fmt.Println("Запрос обработан.")
}

func main() {
    fmt.Println("Сервер запущен.")
    http.HandleFunc("/", Handler)
    http.ListenAndServe(":9000", nil)
}


Запустим из командной строки и сразу получим ответ: Сервер запущен.
Затем сделаем запрос через браузер (http://127.0.0.1:9000) и наблюдаем за консолью.
При каждом обращении, в консоле будет появляться новая фраза Запрос обработан., но Сервер запущен повторяться более не будет.
Всего: 79