Maison >développement back-end >Golang >Développement écologique communautaire des fonctions du golang
L'écosystème de fonctions du langage Go est riche de packages communautaires couvrant un large éventail d'utilisations, des utilitaires aux outils spécifiques à un domaine. Les bibliothèques d'utilitaires incluent : le routeur Gorilla Mux, le pilote MySQL, le package de configuration Viper. Les outils spécifiques au domaine incluent : AWS SDK, le package Redigo Redis et le framework d'API RESTful Kin-tonic. En intégrant ces packages, les développeurs peuvent facilement étendre les fonctionnalités des applications, telles que la création de serveurs HTTP à l'aide des pilotes Gorilla Mux et MySQL.
Riche écosystème communautaire de fonctions Go
L'écosystème de fonctions du langage Go contient de nombreux packages apportés par la communauté, permettant aux développeurs d'étendre facilement les fonctionnalités de leurs applications. Ces packages couvrent un large éventail d'utilisations, depuis les utilitaires courants jusqu'aux outils spécifiques à un domaine.
Bibliothèque d'utilitaires :
Outils spécifiques au domaine :
Exemple pratique :
Création d'un serveur HTTP simple à l'aide du routeur Gorilla Mux et du pilote MySQL :
package main import ( "database/sql" "fmt" "github.com/gorilla/mux" _ "github.com/go-sql-driver/mysql" "net/http" ) func main() { // 创建 MySQL 数据库连接 db, err := sql.Open("mysql", "user:password@tcp(localhost:3306)/database") if err != nil { panic(err) } defer db.Close() // 创建一个新的路由器 router := mux.NewRouter() // 注册处理程序函数 router.HandleFunc("/users", getUsers(db)).Methods(http.MethodGet) router.HandleFunc("/users/{id}", getUser(db)).Methods(http.MethodGet) // 启动服务器 fmt.Println("Server listening on port 8080") http.ListenAndServe(":8080", router) } func getUsers(db *sql.DB) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") rows, err := db.Query("SELECT id, name, email FROM users") if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } defer rows.Close() var users []map[string]interface{} for rows.Next() { var m = map[string]interface{}{} var id int64 var name, email string if err := rows.Scan(&id, &name, &email); err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } m["id"] = id m["name"] = name m["email"] = email users = append(users, m) } // 编码响应 if err := json.NewEncoder(w).Encode(users); err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } } } func getUser(db *sql.DB) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") vars := mux.Vars(r) id := vars["id"] row := db.QueryRow("SELECT id, name, email FROM users WHERE id = ?", id) var u = map[string]interface{}{} var name, email string if err := row.Scan(&id, &name, &email); err != nil { http.Error(w, err.Error(), http.StatusNotFound) return } u["id"] = id u["name"] = name u["email"] = email // 编码响应 if err := json.NewEncoder(w).Encode(u); err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } } }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!