golang 初體驗

54Novice發表於2021-05-16

Golang 學習開始!
目標:編寫一個golang web專案 goblog
以下博文需要你懂一些基本的程式設計知識 如:物件 if switch 變數….
以下博文都是為了這個目標而編寫….

Golang 建立一個簡單的web程式

注意:golang程式中只能使用 “”雙引號
使用golang基本庫fmt net/http

import (
    "fmt"
    "net/http"
)

建立檔案main.go 這個檔案是go 程式的入口檔案必須定義

// main檔案必須定義  package main代表其是入口檔案
// 接下來的程式碼示例將省略這個檔案頭 用...表示
package main

// 你的程式碼業務邏輯
func main() {

}

使用net/http 建立一個簡單的web程式 輸出:hello golang

...
// 另一個寫法 import "net/http" 只引入一個包、庫
import {
    "net/http"
    "fmt"
}

// 處理請求  w & r  代表此方法必須實現的兩個引數
// http.ResponseWriter 這個你需要響應的物件 例如 fmt.Fprint(w,"hello golang")
// http.Request 這個是客戶端的請求資訊
func handleFunc(w http.ResponseWriter, r *http.Request){
    // 響應請求 並寫入響應資訊
    fmt.Fprint(w,"hello golang")
}

func main() {
    // ‘/’ 可理解為 ‘根’請求 
    http.HandleFunc("/",handleFunc)
    // 8080為監聽埠 nil暫時可不管
    http.listenAndServe(":8080",nil)
}

路由

上面的例子我們編寫了一個簡單的web程式 我們現在來給這個程式新增一些路由讓這個程式響應不同的請求

...
func handlerFunc(w http.ResponseWriter, r *http.Request){
    // 定義一個變數 
    // golang和PHP的不同是 單獨定義變數必須定義變數型別 
    // 下面的程式碼可以寫成  Wstr := "" 可省略 var 關鍵字
    var Wstr string

    // r http.Request 在該物件中取出使用者的請求連結
    // 這裡不建議使用if(條件太多沒法記) 
    switch r.URL.Path {
    case "/":
       Wstr = "<h1>Hello, 這裡是 goblog!</h1>"
      break
    case "/about":
       Wstr = "此部落格是用以記錄程式設計筆記,如您有反饋或建議,請聯絡 "+
          "<a href=\"mailto:summer@example.com\">summer@example.com</a>"
      break
    default:
       Wstr = "<h1>請求頁面未找到 :(</h1>"+
          "<p>如有疑惑,請聯絡我們。</p>"
    }

    // 列印資訊到請求
    fmt.Fprint(w,Wstr)
}

...

響應型別及狀態碼 Content-Type 參考

    // 響應404
    // http.StatusNotFound 為http包 預定義的狀態碼  你也可以寫成這樣 w.WriteHeader(404)
    w.WriteHeader(http.StatusNotFound)
    // 響應型別 Content-Type 以下程式碼表示響應內容為 html  charset編碼
    //當然你也可以設定為其它,參考該連結:https://tool.oschina.net/commons/ 
    w.Header().Set("Content-Type","text/html; charset=utf-8")

其它

設定請求代理

預設golang的代理是官方的連結 以下命令可檢視golang預設配置

go env

更改

go env -w  GOPROXY=https://goproxy.cn

godoc 離線文件

下載

go get golang.org/x/tools/cmd/godoc

使用 6060埠號

godoc -http=:6060

需要注意的是這個文件全是英文 中文版的要自己找!

自動過載

主要解決問題是頻繁的停止&&重新編譯
下載&&安裝

go get -u github.com/cosmtrek/air

使用

air

檢視版本

air -v

不知道為啥 我使用air -v 展示的是下面這樣的

沒有版本號….不過不影響使用

結語

多看文件、多看教程…
暫時分享到這裡

本作品採用《CC 協議》,轉載必須註明作者和本文連結