1 回答
TA贡献1806条经验 获得超5个赞
从一个 nil(内部)切片和一个 nil 切片开始。当您将新记录附加到内部切片时。当所有者 ID 更改时,将内部切片附加到切片切片的末尾并将其设置为 nil 以开始构建另一个内部切片。
请注意,您不需要保留计数cntProp,contadorOwners因为您只需附加切片。此外,如果您从nil切片开始,您可以追加,并且将为您分配底层数组。这是一些接近可能对您有用但我没有测试过的代码:
rows, err := dbLeasity.Query(contractsQuery)
if err != nil {
log.Fatal(err)
}
defer rows.Close()
current_owner_id := int64(-1)
var grantJointResponse [][]granJoin
var oneSlice []granJoin
for rows.Next() {
var auxJoin granJoin
if err := rows.Scan(&auxJoin.owner_id, &auxJoin.property_id); err != nil {
log.Fatal(err)
}
if (auxJoin.owner_id.Valid){
if (auxJoin.owner_id.Int64 != current_owner_id){
if oneSlice != nil {
grantJointResponse = append(grantJointResponse, oneSlice)
oneSlice = nil
}
current_owner_id = auxJoin.owner_id.Int64
}
oneSlice = append(oneSlice, auxJoin)
}
}
if oneSlice != nil {
grantJointResponse = append(grantJointResponse, oneSlice)
}
- 1 回答
- 0 关注
- 111 浏览
添加回答
举报