在本文中,我们将按照一些简单的步骤在Go中创建一个简单的HTTP服务器。 在开始之前,让我为您简要介绍一下Go。
什么是去?
Go是一种开放源代码编程语言,区分大小写,并且使用类似于Google在2007年创建的C语言的语法进行静态类型化。它可以快速编译,支持语言级别的并发,并提供垃圾回收,类型安全,动态键入功能,许多高级内置类型,例如可变长度数组和键值映射,尽管不支持通用编程,类型继承,方法或运算符重载,指针算术和断言。
现在,让我们开始设置环境以运行我们的第一个HTTP Server,具体步骤如下:
第1步:下载和提取围棋在任意目录,对我来说这golang下目录/用户/ ArpitAggarwal /如下:
$ 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更新路径 ,如下所示:
$ export GOROOT=/Users/ArpitAggarwal/golang/go
$ export GOPATH=$GOROOT/src
$ export GOBIN=$GOROOT/bin
$ export PATH=$PATH:$GOPATH:$GOBIN
GOROOT指向go安装目录。
GOPATH是指我们的go工作区目录或go 编译完成的位置。
GOBIN是指go生成可执行二进制文件的目录。
步骤3:执行以下命令,验证是否在Bash上正确设置了GOPATH :
$ env | grep -E "^GO"
步骤4:在工作区中创建目录以保留源代码:
$ mkdir -p $GOPATH/github.com/arpitaggarwal
步骤5:移至上一步中创建的目录,并在其中创建一个名为webserver.go的文件,如下所示:
$ cd $GOPATH/github.com/arpitaggarwal
$ touch webserver.go
复制以下Go代码:
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
}
}
让我们了解每行的含义。
package main –它定义程序的程序包名称。
import(“ fmt”,“ log”“ net / http”) –是一个预处理程序命令,它告诉Go编译器包括fmt , log和net / http包中的所有文件。
func helloWorld(w http.ResponseWriter,r * http.Request) –是一个go 函数 。
main() –是程序执行开始的主要功能。
步骤6:使用go工具安装webserver.go ,如下所示:
$ go install $GOPATH/github.com/arpitaggarwal/webserver.go
上面的命令编译webserver.go并在$ GOROOT / bin或GOBIN中生成可执行文件。
步骤7:运行将webserver移至golang目录,如下所示:
$ cd golang
$ ./go/bin/webserver
现在,在浏览器中打开http:// localhost:8080 /或执行命令:
curl http://localhost:8080
将向我们展示“ Hello World!” 作为回应。
步骤8:可以选择使用nohup命令在后台运行二进制文件,如下所示:
$ cd golang
$ nohup ./go/bin/webserver &;
完整的源代码托管在github上
翻译自: https://www.javacodegeeks.com/2017/07/creating-http-server-go.html