在浩瀚的编程语言世界里,Go语言以其简洁、高效、并发性能优异等特点,成为了众多开发者青睐的对象。本文将通过一系列实战案例,带领你开启Go语言的编程之旅,让你在实践中逐步掌握这门语言。
实战案例一:编写一个简单的HTTP服务器
首先,我们来创建一个简单的HTTP服务器。这个服务器将监听在本地端口8080,并对外提供Hello World页面。
package main
import (
"fmt"
"net/http"
)
func helloHandler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello, World!")
}
func main() {
http.HandleFunc("/", helloHandler)
http.ListenAndServe(":8080", nil)
}
运行这段代码后,访问http://localhost:8080,你将看到一个简单的Hello World页面。
实战案例二:使用Go的并发特性实现一个计算器
在这个案例中,我们将使用Go的并发特性来编写一个简单的计算器程序,支持加、减、乘、除四种运算。
package main
import (
"fmt"
"sync"
)
var mu sync.Mutex
func calculate(op string, a, b float64) float64 {
switch op {
case "+":
return a + b
case "-":
return a - b
case "*":
return a * b
case "/":
return a / b
}
return 0
}
func handler(w http.ResponseWriter, r *http.Request) {
op := r.URL.Query().Get("op")
a := r.URL.Query().Get("a")
b := r.URL.Query().Get("b")
var result float64
mu.Lock()
result = calculate(op, a, b)
mu.Unlock()
fmt.Fprintf(w, "Result: %f", result)
}
func main() {
http.HandleFunc("/", handler)
http.ListenAndServe(":8080", nil)
}
在这个案例中,我们使用了sync.Mutex来保证线程安全,避免在并发环境下出现竞态条件。
实战案例三:使用Go的数据库连接功能
在这个案例中,我们将使用Go的数据库连接功能,连接到MySQL数据库,并执行一个简单的查询操作。
package main
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
func queryDatabase() {
db, err := sql.Open("mysql", "username:password@tcp(localhost:3306)/dbname")
if err != nil {
panic(err)
}
defer db.Close()
rows, err := db.Query("SELECT * FROM table")
if err != nil {
panic(err)
}
defer rows.Close()
for rows.Next() {
var col1, col2 string
if err := rows.Scan(&col1, &col2); err != nil {
panic(err)
}
fmt.Println(col1, col2)
}
if err := rows.Err(); err != nil {
panic(err)
}
}
func main() {
queryDatabase()
}
在这个案例中,我们使用了database/sql包来连接MySQL数据库,并执行了一个简单的查询操作。
通过以上三个实战案例,你对Go语言的基本使用应该已经有所了解。在实际开发过程中,你可以根据项目需求,不断探索和学习Go语言的高级特性和最佳实践。祝你编程之旅愉快!
