首頁  >  文章  >  後端開發  >  golang 不用框架

golang 不用框架

王林
王林原創
2023-05-19 10:22:07486瀏覽

golang是一門支援並發程式設計的靜態類型程式語言。它在處理大量的web並發請求時表現非常出色,可以輕鬆地擴展效能。很多人在使用golang時都會使用一些常用的web框架如Beego,Gin,Martini等,但我們可以完全不使用這些框架去寫golang web程式。以下將介紹如何在golang裡面實作web開發,不使用第三方框架。

  1. 使用原生的net/http套件

golang的標準函式庫裡面已經封裝了一些http相關的套件,像是net/http。這個包可以用來實現http客戶端和伺服器。以下是一個簡單的http伺服器的實作:

package main

import (
    "fmt"
    "net/http"
)

func main() {
    http.HandleFunc("/", func(w http.ResponseWriter, req *http.Request) {
        fmt.Fprintf(w, "Hello World")
    })

    http.ListenAndServe(":8080", nil)
}

透過http.HandleFunc#方法來設定路由,參數包括存取路徑和回應處理函數。線上應用程式需要使用TLS(Transport Layer Security)認證機制可以使用http.ListenAndServeTLS()方法。

  1. 使用原生的template套件

golang的標準函式庫裡面還有一個模板引擎template,是golang提供的一種模板渲染機制,他支援解析和執行行為定義在”{{}}”內部的動作指令。透過這種方式能夠很方便的將資料填入指定的模板裡面。

下面是一個使用template的範例:

package main

import (
    "html/template"
    "net/http"
)

func main() {
      http.HandleFunc("/", viewHandler)
      http.ListenAndServe(":8080", nil)
}

func viewHandler(writer http.ResponseWriter, request *http.Request) {
      // 首先定义一个模板字符串
      const myTemplateString = `
              <!DOCTYPE html>
              <html lang="en">
              <head>
                  <meta charset="UTF-8">
                  <title>{{.Title}}</title>
              </head>
              <body>
              {{if .IsUser}}
                  <h1>Hello {{.UserName}}!</h1>
              {{else}}
                  <h1>Hello guest!</h1>
              {{end}}
              </body>
              </html>`
      // 定义一个结构体,用于填充模板
      type MyTemplateData struct {
              Title    string // 页面标题
              IsUser   bool   // 是否是已经登录的用户
              UserName string // 用户名
      }
      // 填充模板
      t, err := template.New("myTemplateString").Parse(myTemplateString)
      if err != nil {
              panic(err)
      }
      data := MyTemplateData{
              Title:    "My Awesome Page",
              IsUser:   true,
              UserName: "Gopher",
      }
      t.Execute(writer, data)
}

這個範例中,首先定義了一個模板字串,然後定義了一個結構體表示填充模板的資料。最後透過template.New方法解析模板,填入資料並將結果輸出到瀏覽器。

  1. 使用原生的sql套件

golang也可以使用原生的sql套件來操作MySQL等資料庫。封裝了sql.DB以支援連接池和線程安全。下面是一個使用golang原生sql包的範例:

package main

import (
    "database/sql"
    "fmt"
    _ "github.com/go-sql-driver/mysql"
)

func main() {
      db, err := sql.Open("mysql", "user:password@tcp(127.0.0.1:3306)/database")
      if err != nil {
              fmt.Println(err)
      }
      defer db.Close()

      // 查询数据库
      rows, err := db.Query("SELECT * FROM users")
      if err != nil {
              fmt.Println(err)
      }
      defer rows.Close()

      for rows.Next() {
              var id int
              var name string
              err = rows.Scan(&id, &name)
              if err != nil {
                      fmt.Println(err)
              }
              fmt.Printf("id: %d, name: %s
", id, name)
      }
}

這個範例中使用sql.Open()開啟一個MySQL的鏈接,然後執行了一個查詢語句SELECT * FROM users,透過rows.Next()遍歷查詢結果集傳回的多筆記錄。

透過上述三個例子可以看出,golang也可以在不使用第三方框架的情況下完成web開發。大家可以依照需求找到需要使用的函式庫來進行web開發。當然,在寫web專案時建議使用有良好封裝和文件支援的第三方框架,畢竟從流程和效率來看,第三方框架會更加便利和有效率。

以上是golang 不用框架的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
上一篇:golang啟動流程下一篇:golang啟動流程