В этом посте мы создадим простой HTTP-сервер в Go, выполнив несколько простых шагов. Прежде чем начать, позвольте мне дать вам краткое введение в Go.
Что такое го?
Go — это язык программирования с открытым исходным кодом, который чувствителен к регистру и статически типизирован с синтаксисом, аналогичным синтаксису языка C, созданного в Google в 2007 году. Он компилируется очень быстро, поддерживает параллелизм на уровне языка и обеспечивает сборку мусора, безопасность типов, динамическую возможность ввода, многие расширенные встроенные типы, такие как массивы переменной длины и карты значений ключей, хотя нет поддержки универсального программирования, наследования типов, перегрузки методов или операторов, арифметики указателей и утверждений.
Теперь давайте начнем с настройки среды для запуска нашего первого HTTP-сервера, выполнив следующие шаги:
Шаг 1: Скачайте и распакуйте Go в любой каталог, для меня это golang в каталоге / Users / ArpitAggarwal / следующим образом:
1
2
3
4
|
$ mkdir golang $ cd golang $ wget https: //storage .googleapis.com /golang/go1 .8.3.darwin-amd64. tar .gz $ tar -xvzf go1.8.3.darwin-amd64. tar .gz |
Шаг 2: Обновите путь с помощью GOROOT , GOPATH и GOBIN следующим образом:
1
2
3
4
|
$ export GOROOT= /Users/ArpitAggarwal/golang/go $ export GOPATH=$GOROOT /src $ export GOBIN=$GOROOT /bin $ export PATH=$PATH:$GOPATH:$GOBIN |
GOROOT относится к каталогу установки go.
GOPATH ссылается на наш каталог рабочей области go или где выполняется go build.
GOBIN относится к каталогу, куда идут генерации исполняемых двоичных файлов.
Шаг 3: Проверьте, правильно ли установлен GOPATH на Bash , выполнив следующую команду:
1
|
$ env | grep -E "^GO" |
Шаг 4: Создайте каталог в рабочей области для хранения исходного кода:
1
|
$ mkdir -p $GOPATH /github .com /arpitaggarwal |
Шаг 5: Перейдите в каталог, который мы создали на предыдущем шаге, и создайте в нем файл с именем webserver.go , как показано ниже:
1
2
|
$ cd $GOPATH /github .com /arpitaggarwal $ touch webserver.go |
Скопируйте следующий код Go:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
|
package main import ( "fmt" "log" "net/http" ) func helloWorld(w http.ResponseWriter, r *http.Request) { fmt .Fprintf(w, "Hello World!" ) // send data to client side } func main() { http.HandleFunc( "/" , helloWorld) // set router err := http.ListenAndServe( ":8080" , nil) // set listen port if err != nil { log.Fatal( "Error while starting GO http server on port - 8080 : " , err) //log error and exit in case of error at server boot up } } |
Давайте разберемся, что означает каждая строка.
основной пакет — определяет имя пакета программы.
import («fmt», «log», «net / http») — это команда препроцессора, которая указывает компилятору Go включать все файлы из пакетов fmt , log и net / http .
func helloWorld (w http.ResponseWriter, r * http.Request) — это функция go.
main () — это основная функция, с которой начинается выполнение программы.
Шаг 6: Установите webserver.go с помощью инструмента go следующим образом:
1
|
$ go install $GOPATH /github .com /arpitaggarwal/webserver .go |
Выше команды скомпилируйте webserver.go и сгенерируйте его исполняемый двоичный файл в $ GOROOT / bin или GOBIN
Шаг 7: Запустите веб-сервер, перейдя в каталог golang , следующим образом:
1
2
|
$ cd golang $ . /go/bin/webserver |
Теперь откройте http: // localhost: 8080 / в браузере или выполните команду:
1
|
curl http: //localhost :8080 |
покажет нам «Hello World!» как ответ.
Шаг 8: При желании мы можем запустить двоичный файл в фоновом режиме, используя команду nohup , следующим образом:
1
2
|
$ cd golang $ nohup . /go/bin/webserver &; |
Полный исходный код размещен на github
Ссылка: | Создание HTTP-сервера в Go от нашего партнера JCG |