Просмотр поста

.
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) и наблюдаем за консолью.
При каждом обращении, в консоле будет появляться новая фраза Запрос обработан., но Сервер запущен повторяться более не будет.