今天 給大家介紹一下Go語言,以及實作MySQL資料庫的操作範例,希望對大家能有所幫助!
一、Go語言介紹
Go語言,也稱為Golang,是由Google開發的一種靜態強型別、編譯型、並行型,並具有垃圾回收功能的程式語言。以下是Go語言的一些主要特點:
二、Go語言特點
語法簡潔:摒棄了一些復雜的編程概念和冗余的語法,容易學習
高效效能:采用的靜態編譯和垃圾回收機制,實作了高效的記憶體管理
並行支持:Go語言是為並行編程而設計的,原生支持goroutine和channel
強大的標準庫:Go語言擁有豐富的標準庫
社群活躍:Go語言的社群非常活躍,有著龐大的開發者群體
三、 Go語言套用場景
伺服器端開發:適合構建高效能的伺服器端應用程式。因為Go語言具有輕量級的協程(goroutine)和高效的並行編程機制。例如谷歌、Dropbox和Netflix等。
網路編程:適合構建Web伺服器、微服務、網路爬蟲、即時通訊系統等。目前Go語言成為開發高負載網路套用的首選語言。
雲端運算:Go語言的輕量級和快速編譯的特點使得它非常適合於構建雲原生套用。例如Docker和Kubernetes等。
系統編程:適合成為開發作業系統、驅動程式和嵌入式系統。
工具開發:很多工具和框架都選擇使用Go語言進行開發。例如,Docker、Etcd、InfluxDB和Prometheus等工具。
人工智慧和大數據分析:Go語言的並行編程模型和記憶體管理機制使得它可以高效地處理大規模數據和復雜計算任務。
四、Go語言環境安裝
安裝Go語言環境,首先官網下載WindowsGo語言安裝包
https://golang.google.cn/dl/
安裝之後,cmd執行命令檢查環境是否安裝成功。
五、Go語言實作Mysql資料庫的增刪概啥
安裝操作資料庫依賴Go-MySQL-Driver
Go-MySQL-Driver是Go語言官方推薦的MySQL驅動, 是Go語言中使用MySQL的最佳選擇
go get -u github.com/go-sql-driver/mysql
可能會報如下錯誤:
原因
GO111MODULE 是 Go 1.11 引入的新版模組管理方式。
GO111MODULE 環境變量用於開啟或關閉 Go 語言中的模組支持,它有 off、on、auto 三個可選值,預設為 auto
win10環境下需要執行如下命令:
go env -w GO111MODULE=auto
然後重新執行安裝命令
go get -u github.com/go-sql-driver/mysql
如果下載的時候報錯
connectex: A connection attempt failed because the connected party did not p
直接進入電腦的環境變量設定國內映像地址
新建環境變量 GOPROXY
值為
https://mirrors.aliyun.com/goproxy/
點選確定後,重新開機命令列視窗,然後執行下載命令
程式碼實作
package main
import (
"database/sql"
"fmt"
"log"
_ "github.com/go-sql-driver/mysql"
)
/*
*獲取mysql資料庫版本
*/
func showMysqlVersion() {
db, err := sql.Open("mysql", "root:12345678@tcp(127.0.0.1:3306)/test2?charset=utf8")
if err != nil {
log.Fatal(err)
}
db.Ping()
defer db.Close()
var version string
errt2 := db.QueryRow("SELECT VERSION()").Scan(&version)
if errt2 != nil {
log.Fatal(errt2)
}
fmt.Println(version)
}
/*
*查詢數據測試
*/
func queryTest() {
// 設定資料庫連線資訊
db, err := sql.Open("mysql", "root:12345678@tcp(127.0.0.1:3306)/test2")
if err != nil {
log.Fatal(err)
}
defer db.Close()
// 執行查詢
rows, err := db.Query("SELECT id, name, age FROM t_user")
if err != nil {
log.Fatal(err)
}
defer rows.Close()
// 遍歷查詢結果
for rows.Next() {
var id int
var name string
var age int
if err := rows.Scan(&id, &name, &age); err != nil {
log.Fatal(err)
}
fmt.Printf("ID: %d, Name: %s, Age: %d\n", id, name, age)
}
if err := rows.Err(); err != nil {
log.Fatal(err)
}
}
/*
*插入數據測試
*/
func insertTest() {
db, err := sql.Open("mysql", "root:12345678@tcp(127.0.0.1:3306)/test2")
db.Ping()
defer db.Close()
if err != nil {
fmt.Println("connect DB error !")
log.Fatalln(err)
}
_, err2 := db.Query("INSERT INTO t_user ( `name`, `address`, `age`) VALUES('小劉','廣東',35)")
if err2 != nil {
log.Fatal(err2)
}
fmt.Println("數據插入成功")
}
/*
*數據更新測試
*/
func updateTest() {
db, err := sql.Open("mysql", "root:12345678@tcp(127.0.0.1:3306)/test2")
db.Ping()
defer db.Close()
if err != nil {
fmt.Println("connect DB error !")
log.Fatalln(err)
}
_, err2 := db.Query("update t_user set name='小明2' where id=1 ")
if err2 != nil {
log.Fatal(err2)
}
fmt.Println("數據更新成功")
}
/*
*數據更新測試
*/
func delTest() {
db, err := sql.Open("mysql", "root:12345678@tcp(127.0.0.1:3306)/test2")
db.Ping()
defer db.Close()
if err != nil {
fmt.Println("connect DB error !")
log.Fatalln(err)
}
_, err2 := db.Query("delete from t_user where id=2 ")
if err2 != nil {
log.Fatal(err2)
}
fmt.Println("數據刪除成功")
}
func main(){
delTest()
updateTest();
//insertTest()
queryTest()
showMysqlVersion()
}
執行效果如下圖
小明工作助手 上線了,功能包括資源列表、圖片處理、短視訊去浮水印、線上娛樂等功能,歡迎免費體驗!
優秀幹貨作者推薦
小編十多年工作經驗積累的電腦軟體分享給大家
CSDN:https://blog.csdn.net/xishining
個人部落格網站:https://programmerblog.xyz
往期推薦
!