golang は、同時プログラミングをサポートする静的型付けプログラミング言語です。大量の同時 Web リクエストを処理する際に非常に優れたパフォーマンスを発揮し、パフォーマンスを簡単に拡張できます。 golang を使用する場合、多くの人は Beego、Gin、Martini などの一般的な Web フレームワークを使用しますが、これらのフレームワークをまったく使用せずに Golang Web プログラムを作成することもできます。ここでは、サードパーティのフレームワークを使用せずに golang で Web 開発を実装する方法を紹介します。
golang の標準ライブラリは、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()
メソッドを使用できます。
golang の標準ライブラリには、golang が提供するテンプレート レンダリング メカニズムであるテンプレート エンジン テンプレートもあり、解析と実行をサポートしています。 ”{{}}”
内のアクション指示で定義されています。このようにして、指定したテンプレートにデータを簡単に入力できます。
以下はテンプレートの使用例です:
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 メソッドを通じてテンプレートが解析され、データが入力され、結果がブラウザに出力されます。
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() を介してクエリ結果セットによって返された複数のレコードを走査します。
上記の 3 つの例からわかるように、golang はサードパーティのフレームワークを使用せずに Web 開発を完了することもできます。 Web 開発に必要なライブラリをニーズに応じて見つけることができます。もちろん、Web プロジェクトを作成するときは、優れたカプセル化とドキュメントのサポートを備えたサードパーティのフレームワークを使用することをお勧めしますが、結局のところ、プロセスと効率の観点からは、サードパーティのフレームワークの方が便利で効率的です。
以上がgolang はフレームワークを必要としませんの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。