发布时间:2024-12-23 00:27:19
以下是一个简单的示例,演示了如何使用Golang创建一个HTTP服务器:
``` package main import ( "fmt" "net/http" ) func main() { http.HandleFunc("/", handler) http.ListenAndServe(":8080", nil) } func handler(w http.ResponseWriter, r *http.Request) { fmt.Fprint(w, "Hello, Golang Web!") } ``` 上述代码中,我们首先导入了所需的包。然后,我们定义了一个名为`handler`的函数,该函数将在每个HTTP请求到达时被调用。最后,在`main`函数中,我们使用`http.HandleFunc`方法将`handler`函数注册为"/"路径的处理程序,并使用`http.ListenAndServe`方法指定要监听的端口。下面是一个简单的例子,展示了如何使用Golang定义多个路由:
``` func main() { http.HandleFunc("/", homeHandler) http.HandleFunc("/about", aboutHandler) http.HandleFunc("/contact", contactHandler) http.ListenAndServe(":8080", nil) } func homeHandler(w http.ResponseWriter, r *http.Request) { fmt.Fprint(w, "Welcome to the home page!") } func aboutHandler(w http.ResponseWriter, r *http.Request) { fmt.Fprint(w, "This is the about page.") } func contactHandler(w http.ResponseWriter, r *http.Request) { fmt.Fprint(w, "Contact us at info@example.com") } ``` 在上述示例中,我们定义了三个不同的处理程序函数,分别用于处理"/"、"/about"和"/contact"路径的请求。每个处理程序函数都会向`http.ResponseWriter`对象写入相应的响应内容。以下是一个示例,演示了如何在Golang中使用模板引擎:
``` package main import ( "html/template" "net/http" ) type User struct { Name string Email string } func main() { http.HandleFunc("/", profileHandler) http.ListenAndServe(":8080", nil) } func profileHandler(w http.ResponseWriter, r *http.Request) { user := User{Name: "John Doe", Email: "john@example.com"} tmpl := template.Must(template.ParseFiles("profile.html")) tmpl.Execute(w, user) } ``` 在上述示例中,我们首先定义了一个`User`结构体,其包含了用户的名称和电子邮件地址。然后,在处理程序函数中,我们创建了一个`User`对象,并使用`template.ParseFiles`方法加载名为"profile.html"的HTML模板文件。最后,我们使用`tmpl.Execute`方法将数据渲染到模板中,并将结果写入`http.ResponseWriter`对象。以下是一个示例,展示了如何使用Golang连接和查询MySQL数据库:
``` package main import ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysql" ) func main() { db, err := sql.Open("mysql", "user:password@tcp(localhost:3306)/database") if err != nil { fmt.Println(err) return } defer db.Close() rows, err := db.Query("SELECT * FROM users") if err != nil { fmt.Println(err) return } defer rows.Close() for rows.Next() { var id int var name string err := rows.Scan(&id, &name) if err != nil { fmt.Println(err) return } fmt.Printf("ID: %d, Name: %s\n", id, name) } if err = rows.Err(); err != nil { fmt.Println(err) } } ``` 在上述示例中,我们首先导入了`database/sql`和`github.com/go-sql-driver/mysql`两个包。然后,我们使用`sql.Open`方法连接到MySQL数据库,并执行了一条查询语句以获取用户表中的数据。最后,我们使用`rows.Next`和`rows.Scan`方法遍历结果集,并将每行的值打印出来。