
golang 简介
Go(又称Golang)是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。
golang发展前景
适合云计算、微服务、基础后端软件的功能实现。
go语言优点
go是非常年轻的一门语言,“兼具Python 等动态语言的开发速度和C/C++等编译型语言的性能与安全性”,具备强大的标准库,内置垃圾回收机制,属于静态类型语言,因此具备编译检查和编码规范,特别是并发功能实现简单,但功能强大,可使用goroutine和channel轻松实现高并发。
golang web 优势
语法简单:语法简洁,新手入门简单,开发应用性能高。
便于维护:强类型静态语言,便于项目的重构和维护。
部署方便:编译的可执行二进制文件,在执行时,不需要部署环境,把编译文件上传,就完成了项目的部署。
Mysql数据库的查询单条、查询所有,条件查询
先贴代码,然后解释

代码中,演示了3个查询
1、通过使用User结构体的方法实现通过User.id查询对应的1条记录

步骤分为:
(1)写sql语句
sqlStr := "SELECT username,password FROM `users` WHERE `id` = ?"
(2)执行数据库操作,需要区别下面的方法,这里的id是来源于结构体的字段
row := Db.QueryRow(sqlStr, u.Id)
(2.1)(可选)如果查询不到,那么就返回空和错误
if err != nil {
return nil, err
}
(3)指定扫描接收的参数
var username, password string
(4)扫描将匹配行中的列复制到目标指向的值中
err := row.Scan(&username, &password)
(4.1)(可选)如果查询不到,将返回err错误信息
if err != nil {
return username, password, err
}
(5)输出查询到的内容
username, password, nil
2、不通过使用User结构体的方法,通过使用函数自定义的id查询对应的1条记录

步骤分为:
(1)写sql语句
sqlStr := "SELECT username,password FROM `users` WHERE `id` = ?"
(2)执行数据库操作,需要区别上面的方法,这里的id是来源于函数的参数
row := Db.QueryRow(sqlStr, id)
(3)指定扫描接收的参数
var username, password string
(4)扫描将匹配行中的列复制到目标指向的值中
err := row.Scan(&username, &password)
(4.1)(可选)如果查询不到,将返回err错误信息
if err != nil {
return username, password, err
}
(5)输出查询到的内容
username, password, nil
3、查询所有记录

步骤分为:
(1)写sql语句
sqlStr := "SELECT username,password FROM `db1`.`users`"
(2)根据sql语句查询所有的数据
rows, err := Db.Query(sqlStr)
(2.1)(可选)如果查询不到,那么就返回空和错误
if err != nil {
return nil, err
}
(3)定义user的map切片,用于接收username和password信息
var users []map[string]string
(4)通过使用rows.Next获取下一行的内容。
如果成功,则返回true
如果没有下一个结果行,或者在准备结果行时出错,则返回false。
每次调用Scan,甚至第一次调用,都必须在调用Next之前
for rows.Next() {
5到8步骤
}
(5)指定扫描接收的参数
var username, password string
(6)扫描将匹配行中的列复制到目标指向的值中,目标中的值数必须与行中的列数相同。
_ = rows.Scan(&username, &password)
(7)将获取到的username, password 写到map
user := map[string]string{
"username": username,
"password": password,
}
(8)将输出的map,增加到切片中
users = append(users, user)
(9)输出查询到的内容
return username, password, nil