Впрочем, лучше один раз увидеть, чем много раз услышать.
Вот hello world писаный на Go и хостящийся на Google App Engine:
package hello
import (
"fmt"
"net/http"
)
func init() {
http.HandleFunc("/", handler)
}
func handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, "Hello, world!")
}
А вот полный исходник hello world'a на Go без всякого Google App Engine, компилящийся в отдельный исполняемый файл и работающий в режиме "сам себе веб-сервер":
package hello
import (
"fmt"
"net/http"
)
func init() {
http.HandleFunc("/", handler)
http.ListenAndServe(":8080", nil) // < отличие тут
}
func handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, "Hello, world!")
}
func main() { // < и тут
init()
}
Как видим, отличие только в точке входа (вместо init точкой входа является main) и собственно явным запуском главного цикла.