第十二篇:入门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 丑小菊}]
}

 

posted @ 2020-06-09 16:51  痞子胥  阅读(263)  评论(0)    收藏  举报