Go-Mega Tutorial 01 - Hello World

01-Hello World

項目地址 https://github.com/bonfy/go-mega

通常計算機書的開頭都是 Hello Worldgit

咱們亦不能免俗,因此本章咱們的任務就是完成最簡單的 Hello Worldgithub

本章的GitHub連接爲: Source, Zipgolang

創建目錄結構

與 Python 相比,Go 對代碼存放的位置仍是有講究的,畢竟這是由 Go 特殊的 package引用機制 決定的,首先創建本身存放此次代碼的文件夾web

$ cd $GOPATH/src
$ mkdir -p github.com/bonfy/go-mega-code
$ cd github.com/bonfy/go-mega-code

這裏若是你們有Github帳號,並且想上傳到本身的repo的話,建議 github.com/your_user_name/repo_name 的文件夾flask

Hello World 應用

在 github.com/bonfy/go-mega-code 文件夾下 創建 main.go,這是咱們程序的主入口瀏覽器

main.go網絡

package main

import "net/http"

func main() {
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        w.Write([]byte("Hello World"))
    })
    http.ListenAndServe(":8888", nil)
}

短短不到10行代碼,咱們的 Hello World 應用就已經完成了,並且不須要任何的其餘第三方Package,只須要引入官方的 net/http 就好了,就是這麼easyapp

讓咱們來運行下面的命令,看下效果函數

$ go run main.go

如今打開您的網絡瀏覽器並在地址欄中輸入如下URL:ui

http://localhost:8888

或者

http://127.0.0.1:8888

01-01

說明

這裏對上面的代碼進行簡單的說明

這裏的 func main() 是主程序入口,主要用到了 net/http 的兩個函數

func HandleFunc(pattern string, handler func(ResponseWriter, *Request))

func ListenAndServe(addr string, handler Handler) error

HandleFunc 相似於 flask的 app.route, pattern 提供了路由路徑,handler是一個函數參數,這裏咱們的程序中傳入的是一個匿名函數, 減小了代碼

ListenAndServe 第一個參數爲 addr,若是不提供ip,這裏只傳入端口,至關於 0.0.0.0:8888 ,第二個參數 Handler 傳入 nil,則表示使用 Default 的 Server

另外 輸出 Hello World 的辦法,大體有三個,以下:

// Case 1: w.Write byte
w.Write([]byte("Hello World"))

// Case 2: fmt.Fprintf
fmt.Fprintf(w, "Hello World")

// Case 3: io.Write
io.WriteString(w, "Hello World")

其中第一種用的是 ResponseWriter 的 Write([]byte) (int, error) 方法, 而 後面兩種是稍微用到了 Go 裏面interface 的特性, ResponseWriter interface 要實現 Write([]byte) (int, error) 的方法,因此也就實現了 io.Writer 方法,因此能夠做爲 io.Writer 的類型做爲 後面兩個函數的參數。

這裏若是想更深刻的瞭解 net/http 處理請求的話,能夠看下Go源碼中的 net/http/server.go

或者看下 Go的http包詳解

相關文章
相關標籤/搜索