第十二篇:入门slice切片、查询返回实体集合
引言:上一篇 我们遗留一个思考问题 如何把查询出来的数据 变成一个结构体数组?
但是有个问题:数组一旦定义好长度以后,是不能改变长度的,如果动态的把查询出来的数据组装成结构体数组是不能实现的
所以我们引入切片的概念
一:切片
切片追加元素使用append函数,这里面cap的理解可以粗略的理解为:
如果cap不够则会创建一个新的slice,把原有的slice拷贝进去,因此实际开发要预估一个合适的cap,否则会导致额外的的性能开销
arr:=[5]int{1,2,3,4,5}
s:=arr[:2]
s=append(s,6,7,8,9)
//容量不足的情况下,会自动扩容,首次扩容加一倍,以前是5,现在是10
fmt.Println(len(s),cap(s))//6 10
二:遗留思考问题:把查询出来的数据 变成一个结构体数组
package main
import (
"com.pizixu/models"
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
func main(){
db, err := sql.Open("mysql",
"用户名:密码@tcp(IP:3306)/数据库?charset=utf8mb4")
if err !=nil{
fmt.Println("连接错误"+err.Error())
return
}
rows,err:=db.Query("select id,nick_name from xcx_user where id<=10 and id>6")
if err !=nil{
fmt.Println("查询错误"+err.Error())
return
}
userModels:=[]models.UserModel{}
for rows.Next(){
temp:=models.UserModel{}
rows.Scan(&temp.Uid,&temp.Uname)
userModels=append(userModels,temp)
}
fmt.Println(userModels)//[{8 涅凡尘} {9 丑小菊}]
}

浙公网安备 33010602011771号